【问题标题】:How do I get the key for each object in a dynamic JSON array?如何获取动态 JSON 数组中每个对象的密钥?
【发布时间】:2014-07-10 04:42:38
【问题描述】:

如何解析这个对象并获取每个人的姓名(键)?

我不能只做String name = jsonObject.getString("name");,因为名称是,而不是值。

JSONObject jsonObject =

{
    "data" :
    [{
        "Bob": {
            "last-name": "Jorgenson",
            "email": "b@b.com",
        },

        "Steve": {
            "last-name": "Bobson",
            "email": "steve@juno.com",
        },
    }],
    "statusCode" : 200
}

那么用动态命名的键解析它的最佳方法是什么?

更新:

jArray 取自现在表示的 jsonObject。但是,由于与尝试从 jsonObject.get("data") 获取 jArray 相关的类型错误,我无法实现答案

免责声明

是的,这是非常基本的东西。不过,动态位让我失望。有许多类似的问题,但它们通常涉及许多其他因素。我可以成功下载数据并将其存储在上面的 JSONObject jsonObject 中。我只需要弄清楚如何解析上述数据。

【问题讨论】:

标签: java android json arrays


【解决方案1】:
    Iterator<String> keys = jsonObject.keys();
    while (keys.hasNext()) {
        String key = keys.next();
    }

【讨论】:

  • 漂亮简洁的答案。迭代器是否会跳过 item[0],因为它以 keys.next() 开头?当我在 while 循环的每个部分记录键时,它只记录数据中的 n-1 个元素(表明它可能在开头或结尾跳过了一个项目。)
  • 这很奇怪。迭代器总是开始之前第一个项目。也许你应该把它作为一个新问题发布......
  • 我会仔细检查并确保我没有搞砸任何事情。谢谢!
【解决方案2】:

JSONObject 的keys() 方法可能就是您要查找的方法。

【讨论】:

    【解决方案3】:

    你可以用这个:

    for(int i=0;i<jsonArray.length();i++){
        JSONObject temp = jsonArray.getJSONObject(i);
        String name;
        Iterator<String> keys = temp.keys();
        if(keys.hasNext())
            name = keys.next();
    }
    

    【讨论】:

      猜你喜欢
      • 2018-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多