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);
}
}
}
添加回答
舉報