将JSON子对象插入现有JSON

时间:2016-01-28 19:52:57

标签: java json

我从一个看起来像这样的Web服务调用中获取JSON:

{
  results : 
    {
     seg: {
        segName: whatever,
        segType: atest,
        var: [
            {field1: value1,
             field2: value2,
             field3: value3},
            {field1: value4,
             field2: value5,
             field3: value6}
            ]
          }
     }
}

我在Java中使用net.sf.json包。我从这个结果创建了一个JSON对象。

我想手动将另一个条目(JSONObject)添加到数组“var”。

除了将对象一直解构为JSONArray“var”,然后重建它之外,有没有办法在var中插入另一个条目?

我尝试了accumulate(“var”,new JSONObject(...));但是这个新对象在“结果”部分中与“seg”处于同一级别。

1 个答案:

答案 0 :(得分:2)

您必须在要插入新对象的级别调用accumulate。

如果向下钻取到“seg”级别并在那里累积新对象,则会将新条目添加到“var”数组中。

e.g。

String json = // your input JSON string here
JSONObject obj = new JSONObject(json);
obj.getJSONObject("results")
   .getJSONObject("seg")
   .accumulate("var", new JSONObject("{field1 : value7, field2: value8, field3: value9}"));
System.out.println(obj);

给出

{"results":{"seg":{"var":[{"field3":"value3","field2":"value2","field1":"value1"},{"field3":"value6","field2":"value5","field1":"value4"},{"field3":"value9","field2":"value8","field1":"value7"}],"segType":"atest","segName":"whatever"}}}