【问题标题】:Inserting JSON Subobject into existing JSON将 JSON 子对象插入现有 JSON
【发布时间】:2016-01-28 19:52:56
【问题描述】:

我从 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”保持在同一级别。

【问题讨论】:

  • 您可以编辑文本或只获取 json 对象...它没有您认为的那么密集,通常没有必要避免获取 obj
  • 我的错,因为我的开发盒没有连接到互联网,所以我不得不将 json 放入这个问题中。我编辑了帖子以添加逗号。我想避免将新条目的文本手动插入 JSON 文本版本的 var 区域。我希望有一个优雅的解决方案,允许我向 JSONArray 添加一个名为“var”的 JSONObject。

标签: java json


【解决方案1】:

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

如果您深入到“seg”级别,并在那里累积新对象,您会将新条目添加到“var”数组中。

例如

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"}}}

【讨论】:

  • 为什么结果是“错误”的顺序?有没有可能避免这种情况?
  • 这很好用!谢谢!旁注:如果您想在特定位置(例如在开头)添加新元素,请使用:obj.getJSONObject("results").getJSONObject("seg").getJSONArray("var").add(0, newJSONObject("{field1:value1, field2:value2,field3:value3}"));
猜你喜欢
  • 1970-01-01
  • 2023-03-05
  • 2021-11-12
  • 2020-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-16
  • 2018-06-19
相关资源
最近更新 更多