我希望处理以下格式的JSON文件:我希望文件中的数据是Java语言中的JSONObject
对象。
然而,让我感到困惑的是,File中的对象都有一个名称,而且我在网上找不到此类JSON文档的其他示例。
请提个建议。
{
"bazaar": {
"21943236": {
"cost": 69750,
"quantity": 287
},
"20824133": {
"cost": 69960,
"quantity": 500
},
"21885344": {
"cost": 69999,
"quantity": 30
},
"10109747": {
"cost": 70000,
"quantity": 18
}
}
}
发布于 2018-06-10 05:11:57
使用它并不是那么复杂。例如,如果你有一个类
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));
}
发布于 2018-06-10 05:05:39
根据您使用的库,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
}
https://stackoverflow.com/questions/50778440
复制相似问题