Как я могу превратить JSONArray в JSONObject? - PullRequest
10 голосов
/ 25 августа 2011

В основном у меня есть:

JSONArray j = new JSONArray();
j.add(new JSONObject()); //JSONObject has a bunch of data in it
j.add(new JSONArray());  //JSONArray has a bunch of data in it

А теперь я хотел бы превратить JSONArray в JSONObject с той же информацией в нем. Так что я могу обойти Объект, а затем, когда захочу, я могу собрать всю информацию из объекта. Любая помощь будет оценена, спасибо.

Ответы [ 4 ]

21 голосов
/ 25 августа 2011

Как правило, объект Json будет содержать ваши значения (включая массивы) как именованные поля внутри.Итак, что-то вроде:

JSONObject jo = new JSONObject();
JSONArray ja = new JSONArray();
// populate the array
jo.put("arrayName",ja);

Который в JSON будет {"arrayName": [...]}.

2 голосов
/ 16 октября 2015

У меня есть JSONObject следующим образом: {"status":[{"Response":"success"}]}.

Если я хочу автоматически преобразовать значение JSONObject, которое является JSONArray, в JSONObject без использования статического значения, вот код для этого.

JSONArray array=new JSONArray();
JSONObject obj2=new JSONObject();
obj2.put("Response", "success");
array.put(obj2);
JSONObject obj=new JSONObject();
obj.put("status",array);

Преобразование массива JSONArray в объект JSON:

Iterator<String> it=obj.keys();
        while(it.hasNext()){
String keys=it.next();
JSONObject innerJson=new JSONObject(obj.toString());
JSONArray innerArray=innerJson.getJSONArray(keys);
for(int i=0;i<innerArray.length();i++){
JSONObject innInnerObj=innerArray.getJSONObject(i);
Iterator<String> InnerIterator=innInnerObj.keys();
while(InnerIterator.hasNext()){
System.out.println("InnInnerObject value is :"+innInnerObj.get(InnerIterator.next()));


 }
}
2 голосов
/ 20 ноября 2012

код:

List<String> list = new ArrayList<String>();

list.add("a");

JSONArray array = new JSONArray();

for (int i = 0; i < list.size(); i++) {
    array.put(list.get(i));
}
JSONObject obj = new JSONObject();

try {
    obj.put("result", array);
} catch (JSONException e) {
    e.printStackTrace();
}
1 голос
/ 25 августа 2011

Не можете ли вы изначально получить данные как JSONObject?

Возможно, сначала проанализировать строку как JSONObject и JSONArray? Откуда берется строка JSON?

Я не уверен, что можно преобразовать JsonArray в JsonObject.

Полагаю, вы используете следующее из json.org

  • JSONObject.java
    JSONObject - это неупорядоченная коллекция пар имя / значение. Его внешняя форма представляет собой строку, заключенную в фигурные скобки с двоеточиями между именами и значениями и запятыми между значениями и именами. Внутренняя форма - это объект, имеющий методы get () и opt () для доступа к значениям по имени и методы put () для добавления или замены значений по имени. Значения могут быть любого из следующих типов: Boolean, JSONArray, JSONObject, Number и String или объект JSONObject.NULL.

  • JSONArray.java
    JSONArray - это упорядоченная последовательность значений. Его внешняя форма представляет собой строку, заключенную в квадратные скобки с запятыми между значениями. Внутренняя форма - это объект, имеющий методы get () и opt () для доступа к значениям по индексу и методы put () для добавления или замены значений. Значения могут быть любого из следующих типов: Boolean, JSONArray, JSONObject, Number и String или объект JSONObject.NULL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...