我想以下列格式处理JSON文件:我想要数据
在文件中是Java中的JSONObject
个对象。
但是我对这个事实感到困惑,文件中的对象有一个名字,我在网上找不到这种JSON文档的其他例子。
请建议。
{
"bazaar": {
"21943236": {
"cost": 69750,
"quantity": 287
},
"20824133": {
"cost": 69960,
"quantity": 500
},
"21885344": {
"cost": 69999,
"quantity": 30
},
"10109747": {
"cost": 70000,
"quantity": 18
}
}
}
答案 0 :(得分:2)
根据您使用的库,JSONObject可能会实现Map<String, Something>
。
通过调用bazaar.keySet()。
,它为您提供所包含对象的所有名称所以它会像:
JsonObject bazaar = howeverYouLikeToObtainTheBazaarObject();
for(String name : bazaar.keySet()) {
JSONObject costQuantity = bazaar.getJsonObject(name);
// do stuff with name and costQuantity
}
答案 1 :(得分:1)
使用起来并不复杂。例如,如果你有班级
class BazaarItem {
String id;
int cost;
int quantity;
public BazaarItem(String id, int cost, int quantity) {
this.id = id;
this.cost = cost;
this.quantity = quantity;
}
}
然后你可以解析JSON对象(我在这里使用org.json库)
String json = "your json";
JSONObject bazaar = new JSONObject(json).getJSONObject("bazaar");
然后,通过遍历键,您可以将其转换为列表
List<BazaarItem> items = new ArrayList<>(bazaar.size());
for (String key : bazaar.keys()) {
JSONObject value = items.getJSONObject(key);
int id = Integer.parseInt(key);
int cost = value.getInt("cost");
int quantity = value.getInt("quantity");
items.add(new BazaarItem(id, cost, quantity));
}
或将其转换为地图。
Map<Integer, BazaarItem> items = new HashMap<>(bazaar.size());
for (String key : bazaar.keys()) {
JSONObject value = items.getJSONObject(key);
int id = Integer.parseInt(key);
int cost = value.getInt("cost");
int quantity = value.getInt("quantity");
items.put(id, new BazaarItem(id, cost, quantity));
}