将值添加到Json对象

时间:2014-03-26 06:29:14

标签: android json android-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 个答案:

答案 0 :(得分: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] {&#34;值&#34;:&#34; new&#34;}

04-06 12:38:03.295:I / @@@@(10307):添加resultArray [1] {&#34;值&#34;:&#34; old&#34;}