首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Java中使用命名JSON对象

在Java中使用命名JSON对象
EN

Stack Overflow用户
提问于 2018-06-10 04:53:06
回答 2查看 432关注 0票数 0

我希望处理以下格式的JSON文件:我希望文件中的数据是Java语言中的JSONObject对象。

然而,让我感到困惑的是,File中的对象都有一个名称,而且我在网上找不到此类JSON文档的其他示例。

请提个建议。

代码语言:javascript
复制
{
"bazaar": {
    "21943236": {
        "cost": 69750,
        "quantity": 287
    },
    "20824133": {
        "cost": 69960,
        "quantity": 500
    },
    "21885344": {
        "cost": 69999,
        "quantity": 30
    },
    "10109747": {
        "cost": 70000,
        "quantity": 18
    }
}
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-10 05:11:57

使用它并不是那么复杂。例如,如果你有一个类

代码语言:javascript
复制
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库)。

代码语言:javascript
复制
String json = "your json";
JSONObject bazaar = new JSONObject(json).getJSONObject("bazaar");

然后,通过对键进行迭代,您可以将其转换为列表

代码语言:javascript
复制
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));
}

或者将其转换为地图。

代码语言:javascript
复制
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));
}
票数 1
EN

Stack Overflow用户

发布于 2018-06-10 05:05:39

根据您使用的库,JSONObject可能会实现Map<String, Something>

这将通过调用bazaar.keySet()为您提供所包含的所有对象的名称。

所以它会是这样的:

代码语言:javascript
复制
JsonObject bazaar = howeverYouLikeToObtainTheBazaarObject();

for(String name : bazaar.keySet()) {
  JSONObject costQuantity = bazaar.getJsonObject(name);
  // do stuff with name and costQuantity
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50778440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档