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

在事先不知道键或值的情况下,如何获取每个项目的键和值?

4

5 回答 5

326

使用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!
    }
}
于 2012-11-26T22:06:29.450 回答
68

Short version of Franci's answer:

for(Iterator<String> iter = json.keys();iter.hasNext();) {
    String key = iter.next();
    ...
}
于 2013-08-24T19:01:16.157 回答
6

You'll need to use an Iterator to loop through the keys to get their values.

Here's a Kotlin implementation, you will realised that the way I got the string is using optString(), which is expecting a String or a nullable value.

val keys = jsonObject.keys()
while (keys.hasNext()) {
    val key = keys.next()
    val value = targetJson.optString(key)        
}
于 2019-02-04T01:20:37.667 回答
3

你应该使用keys()ornames()方法。 keys()会给你一个包含对象中所有字符串属性名称的迭代器,同时names()会给你一个包含所有关键字符串名称的数组。

您可以在此处获取 JSONObject 文档

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

于 2012-11-26T22:07:27.003 回答
-2

看看 JSONObject 参考:

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

在不实际使用该对象的情况下,看起来使用返回 Iterator 的 getNames() 或 keys() 是可行的方法。

于 2012-11-26T22:06:38.643 回答