我有一个像这样的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要求这样做?
谢谢!
答案 0 :(得分:0)
您可以在java中使用lib:gson-2.2.3.jar
答案 1 :(得分:0)
您可以使用Jackson或Gson解析Json字符串并浏览该对象数组并以编程方式更改值。
答案 2 :(得分:0)
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