Добавление значений в объект Json

Мой JsonArray структура такая:

resultArray = 
[
{
    "key1": [],
    "key2": "keyval",
    "key3": "keyVal"
},
{
    "key1": [],
    "key2": "keyval",
    "key3": "keyVal"
},
{
    "key1": [],
    "key2": "keyval",
    "key3": "keyVal"
}
]

Я пытаюсь добавить JsonObject в первом положении

JSONObject jo = new JSONObject();
jo.put("aa","bb");

( (JSONObject)resultArray.get(0)).getJSONArray("key1").put(jo);

после выполнения вышеуказанного шага ниже приведен результат.

resultArray = [{ "key1": [{"aa","bb"}] ,"key2":"keyval", "key3":"keyVal" },
{ "key1": [{"aa","bb"}] ,"key2":"keyval", "key3":"keyVal" },
{ "key1": [{"aa","bb"}] ,"key2":"keyval", "key3":"keyVal" } ]

Значения добавляются ко всем пунктам в моем JsonArray,

Но я хочу добавить к конкретной позиции.

В приведенном выше случае я хочу добавить только в позиции "0".

Пожалуйста, дайте мне знать, если есть какая-либо ошибка в строке ниже:

( (JSONObject)resultArray.get(0)).getJSONArray("key1").put(jo);

1 ответ

Привет, я попробовал ваш код и работает нормально. Для более подробной информации, пожалуйста, проверьте с рабочим примером.

try {
        JSONArray resultArray = new JSONArray();

        JSONObject obj1 = new JSONObject();
        JSONArray keyArray1 = new JSONArray();
        obj1.put("key1", keyArray1);
        resultArray.put(obj1);

        JSONObject obj2 = new JSONObject();
        JSONArray keyArray2 = new JSONArray();
        JSONObject item1 = new JSONObject();
        item1.put("value", "old");
        keyArray2.put(item1);
        obj2.put("key1", keyArray2);
        resultArray.put(obj2);

        JSONObject jo = new JSONObject();
        jo.put("value", "new");

        Log.i("@@@@",
                "before Add  lengths "
                        + ((JSONObject) resultArray.get(0)).getJSONArray(
                                "key1").length());
        ((JSONObject) resultArray.get(0)).getJSONArray("key1").put(jo);
        Log.i("@@@@",
                "After Add resultArray [0] "
                        + ((JSONObject) resultArray.get(0))
                                .getJSONArray("key1").get(0).toString());
        Log.i("@@@@",
                "After Add resultArray [1] "
                        + ((JSONObject) resultArray.get(1))
                                .getJSONArray("key1").get(0).toString());
    } catch (JSONException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

Запустите это и увидите результат в LogCat.

Результат:

04-06 12: 38: 03.295: I / @@@@ (10307): before Добавить длины 0

04-06 12: 38: 03.295: I / @@@@ (10307): после добавления resultArray [0] {"value": "new"}

04-06 12: 38: 03.295: I / @@@@ (10307): после добавления resultArray [1] {"value":"old"}

Другие вопросы по тегам