Android JSONObject - 如何遍历平面JSON对象以获取每个键和值

时间:2012-11-26 22:02:33

标签: java android json

{
  "key1": "value1",
  "key2": "value2",
  "key3": "value3"
}

如何在不事先知道钥匙或价值的情况下获得每件物品的钥匙和价值?

5 个答案:

答案 0 :(得分:290)

使用keys()迭代器迭代所有属性,并为每个属性调用get()

Iterator<String> iter = json.keys();
while (iter.hasNext()) {
    String key = iter.next();
    try {
        Object value = json.get(key);
    } catch (JSONException e) {
        // Something went wrong!
    }
}

答案 1 :(得分:65)

弗朗西答案的简短版本:

for(Iterator<String> iter = json.keys();iter.hasNext();) {
    String key = iter.next();
    ...
}

答案 2 :(得分:3)

您应该使用keys()names()方法。 keys()将为您提供一个包含对象中所有String属性名称的迭代器,而names()将为您提供所有关键字符串名称的数组。

您可以在此处获取JSONObject文档

http://developer.android.com/reference/org/json/JSONObject.html

答案 3 :(得分:0)

您将需要使用Iterator来遍历键以获取其值。

这是Kotlin的实现,您将意识到我获得字符串的方式是使用optString(),它期望使用String或可为空的值。

val keys = jsonObject.keys()
while (keys.hasNext()) {
    val key = keys.next()
    val value = targetJson.optString(key)        
}

答案 4 :(得分:-1)

看一下JSONObject引用:

http://www.json.org/javadoc/org/json/JSONObject.html

如果没有实际使用该对象,它看起来像使用getNames()或keys()返回Iterator是可行的方法。