2 回答
TA贡献1963条经验 获得超6个赞
根据您的示例,bodies是一个 JSON 数组。所以使用JSONArray库org.json:json来迭代数组的内容:
String json = "{\"bodies\": [{\"total\": 142250.0, \"_id\": \"BC\"}]}";
JSONObject jsonInput = new JSONObject(new JSONTokener(new StringReader(json)));
JSONArray array = jsonInput.getJSONArray("bodies");
for (int i = 0; i < array.length(); i++) {
JSONObject obj = array.getJSONObject(i);
// implement here your logic on obj
}
TA贡献1828条经验 获得超3个赞
您可以这样做并根据您的要求操作每个值。每次在对象中找到任何 JSONObject 或 JSONArray 时,都会递归调用此方法。用于操作特定键值的 handleValue() 方法。
public void handleJSON(Object input, Map<String,Object> result ){
if (input instanceof JSONObject) {
List < String > keys = new ArrayList < > (((JSONObject) input).keySet());
for (String key: keys) {
if (!(((JSONObject) input).get(key) instanceof JSONArray))
if (((JSONObject) input).get(key) instanceof JSONObject) {
handleJSONObject(((JSONObject) input).get(key), map);
} else {
Object value = ((JSONObject) input).get(key);
((JSONObject) input).put(key, handleValue(value, map));
}
else
handleJSONObject(new JSONArray(((JSONObject) input).get(key).toString()), map);
}
}
if (input instanceof JSONArray) {
for (int i = 0; i < ((JSONArray) input).length(); i++) {
JSONObject jsonObject = ((JSONArray) input).getJSONObject(i);
handleJSONObject(jsonObject, map);
}
}
}
添加回答
举报