繁体   English   中英

如何更新JSON文档中的对象列表

[英]How to update a list of objects in a JSON document

我有一个像这样的JSON文档:

[
    {"type":"IC","v":88},
    {"type":"SC","v":"XXX"},
    {"type":"IC","v":33},
    {"type":"IC","v":99999}
]

并且我想替换每个对象中的"v"值,因此生成的JSON文档如下所示:

[
    {"type":"IC","v":111},
    {"type":"SC","v":"YYYYYY"},
    {"type":"IC","v":222},
    {"type":"IC","v":333}
]

我想知道是否有一些API可以调用?

谢谢!

您可以在java中使用一个lib:gson-2.2.3.jar

您可以使用Jackson或Gson解析Json字符串,然后遍历该对象数组并以编程方式更改值。

json库

JSONObject obj = new JSONObject("{types:[{'type':'IC','v':88}, {'type':'SC','v':'XXX'}]}");
JSONArray array = obj.getJSONArray("interests");
for(int i = 0 ; i < array.length() ; i++){
      JSONObject item = array.getJSONObject(i);
      item.put("vv", YOUR_DATA);
}

我认为使用对象会让您的生活变得更轻松,为此,我建议Gson将您的json映射到对象数组,然后将它们反序列化回普通的json

您可以利用http://www.json.org/java/以及许多其他可用的API。 在这种情况下,您的json String本质上是JSONArray 该数组的每个元素都是一个JSONObject

您可以遍历此数组,并遍历单个对象的键/值对来按自己的喜好操纵数据。

在下面的示例中(假设Java 7用于基于String的切换/大小写),我从String(或取决于应用程序的流)中获取jsonarray,并遍历各个对象以获取键/值的句柄。

然后,我根据您的选择标准进行操作。

从而:

        String jsonString = "[{\"type\":\"IC\",\"v\":88},{\"type\":\"SC\",\"v\":\"XXX\"},{\"type\":\"IC\",\"v\":33},{\"type\":\"IC\",\"v\":99999}]";

        JSONArray array = new JSONArray(jsonString);
        System.out.println("BEFORE --> " + array);

        for (int i = 0; i < array.length(); i++) {
            if (array.get(i) instanceof JSONObject) {
                JSONObject obj = (JSONObject) array.get(i);

                switch ((String) obj.get("type")) {
                case "IC":
                    if (i == 0)
                        obj.put("v", 88);
                    else if (i == 2)
                        obj.put("v", 222);
                    else if (i == 3)
                        obj.put("v", 333);
                    break;
                case "SC":
                    obj.put("v", "YYYY");
                    break;
                }
            }
        }

        System.out.println("AFTER --> " + array);

会给;

BEFORE --> [{"v":88,"type":"IC"},{"v":"XXX","type":"SC"},{"v":33,"type":"IC"},{"v":99999,"type":"IC"}]
AFTER --> [{"v":88,"type":"IC"},{"v":"YYYY","type":"SC"},{"v":222,"type":"IC"},{"v":333,"type":"IC"}]

json-lib具有多种方法来操作JSONArray

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM