我有一个JSONArray,其数据格式如下:
[[{ "Country" : "IN", "count" : 10},{ "Country" : "US", "count" : 20}],
[{ "Country" : "IN", "count" : 10},{ "Country" : "US", "count" : 20}]]
我想将数据放到HashMap中,如下所示:
"IN":10
"US":20
"IN":10
"US":20
基本上,我正在进行计数匹配,以确保某个类型的所有Country
具有相同的count
。
以下是我尝试的内容,JSONArray存储为myArray
:
Map<String, Integer> cargo = new HashMap<>();
for (int j = 0; j < myArray.length(); j++) {
String country = myArray.getJSONObject(j).getString("country");
Integer count = myArray.getJSONObject(j).getInt("count");
cargo.put(country, count);
}
但我收到JSONArray[0] is not a JSONObject
错误。
谢谢,
编辑:这有助于我将其映射。
`
Map<String, Integer> cargo = new HashMap<>();
for (int j = 0; j < myArray.length(); j++) {
for (int k = 0; k < myArray.getJSONArray(j).length(); k++) {
String country = myArray.getJSONArray(j).getJSONObject(k).getString("country");
Integer count = myArray.getJSONArray(j).getJSONObject(k).getInt("count");
cargo.put(country, count);
}
`
答案 0 :(得分:1)
您的JSONArray[0]
等于
[{ "Country" : "IN", "count" : 10},{ "Country" : "US", "count" : 20}]
因此,确实不是JSONObject
,您需要在for
内执行for
,以迭代每个对象。
for (int j = 0; j < myArray.length(); j++) {
for (int k = 0; k < myArray[j].length(); k++) {
String country = myArray[j].getJSONObject(k).getString("country");
Integer count = myArray[j].getJSONObject(k).getInt("count");
cargo.put(country, count);
}
}
答案 1 :(得分:0)
你的json是一个数组数组,所以你需要在每个数组上有一个额外的循环。