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

时间:2014-03-19 16:31:40

标签: java json

我有一个像这样的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要求这样做?

谢谢!

6 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

json library

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);
}

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

您可以遍历此数组并处理单个对象的键/值对,以根据自己的喜好操作数据。

在下面的例子中(假设Java 7用于基于字符串的switch / case),我从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"}]

答案 5 :(得分:-1)

json-lib有各种方法可以操作JSONArray