[英]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字符串,然后遍历该对象数组并以编程方式更改值。
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.