it-roy-ru.com

Как я могу превратить JSONArray в JSONObject?

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

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 с той же информацией в нем. Так что я могу обойти Объект, а затем, когда захочу, я могу получить всю информацию из объекта. Любая помощь будет оценена, спасибо.

8
Grammin

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

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

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

17
david van brink

Код: 

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();
}
2
Ravi

Вы не можете изначально получить данные как 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.

1
Pez Cuckow

У меня есть 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 Object:

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()));


 }
}
1
zameer