0

我的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);
4

1 回答 1

0

嗨,我试过你的代码并且工作正常。如需更多说明,请查看工作示例。

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): 在添加长度 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"} 之后

于 2014-03-26T07:10:08.227 回答