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

use*_*763 97 java android json

{
  "key1": "value1",
  "key2": "value2",
  "key3": "value3"
}
Run Code Online (Sandbox Code Playgroud)

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

Fra*_*nov 299

使用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!
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 注意:你不能使用简短形式(String s:json.keys()){...}真的很遗憾JSONArray和JSONObject都不可迭代.:-( (7认同)
  • @PravinsinghWaghela这是问题中指定的JSONObject (2认同)

Roo*_*ahi 66

弗朗西答案的简短版本:

for(Iterator<String> iter = json.keys();iter.hasNext();) {
    String key = iter.next();
    ...
}
Run Code Online (Sandbox Code Playgroud)


Mor*_*Koh 5

您需要使用 anIterator来遍历键以获取它们的值。

这是一个 Kotlin 实现,您会意识到我获取字符串的方式是 using optString(),它需要一个 String 或一个可为空的值。

val keys = jsonObject.keys()
while (keys.hasNext()) {
    val key = keys.next()
    val value = targetJson.optString(key)        
}
Run Code Online (Sandbox Code Playgroud)