Android JSONObject - 我如何遍历一个平面 JSON 对象来获取每个键和值
Posted
技术标签:
【中文标题】Android JSONObject - 我如何遍历一个平面 JSON 对象来获取每个键和值【英文标题】:Android JSONObject - How can I loop through a flat JSON object to get each key and value 【发布时间】:2012-11-14 11:09:24 【问题描述】:
"key1": "value1",
"key2": "value2",
"key3": "value3"
如何在事先不知道 key 和 value 的情况下获取每个 item 的 key 和 value?
【问题讨论】:
***.com/questions/9151619/… 【参考方案1】:使用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!
【讨论】:
注意:您不能使用 (String s: json.keys()) ... 的缩写形式 JSONArray 和 JSONObject 都不是可迭代的,这真是太可惜了。 :-( 这里的json是什么? Json 对象、Json 数组还是其他? @PravinsinghWaghela 它是问题中指定的 JSONObject【参考方案2】:看看 JSONObject 参考:
http://www.json.org/javadoc/org/json/JSONObject.html
在不实际使用对象的情况下,看起来使用返回 Iterator 的 getNames() 或 keys() 是可行的方法。
【讨论】:
链接错误。 android 中的JSONObject
没有getNames()
。 developer.android.com/reference/org/json/JSONObject.html【参考方案3】:
您应该使用keys()
或names()
方法。 keys()
会给你一个包含对象中所有字符串属性名称的迭代器,而names()
会给你一个包含所有关键字符串名称的数组。
您可以在此处获取 JSONObject 文档
http://developer.android.com/reference/org/json/JSONObject.html
【讨论】:
【参考方案4】:弗朗西回答的简短版本:
for(Iterator<String> iter = json.keys();iter.hasNext();)
String key = iter.next();
...
【讨论】:
这里的json是什么? Json 对象、Json 数组还是其他? json 是 JsonObject @PravinsinghWaghela 很确定 OP 询问了如何遍历 json 对象。【参考方案5】:您需要使用Iterator
循环访问键以获取它们的值。
这是一个 Kotlin 实现,你会意识到我获取字符串的方式是使用 optString()
,它需要一个字符串或一个可为空的值。
val keys = jsonObject.keys()
while (keys.hasNext())
val key = keys.next()
val value = targetJson.optString(key)
【讨论】:
以上是关于Android JSONObject - 我如何遍历一个平面 JSON 对象来获取每个键和值的主要内容,如果未能解决你的问题,请参考以下文章
如何压缩 JSONObject 在 Android 中通过 Http 发送它?
如何将 JsonObject 转换为类模型 kotlin android
Android JSONObject - 我如何遍历一个平面 JSON 对象来获取每个键和值