{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
如何在不事先知道钥匙或价值的情况下获得每件物品的钥匙和价值?
答案 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是可行的方法。