Java Android JSONObject-如何循环通过平面JSON对象来获取每个键和值
如何在事先不知道键和值的情况下获取每个项的键和值?使用迭代器迭代所有属性,并调用每个属性Java Android JSONObject-如何循环通过平面JSON对象来获取每个键和值,java,android,json,Java,Android,Json,如何在事先不知道键和值的情况下获取每个项的键和值?使用迭代器迭代所有属性,并调用每个属性 { "key1": "value1", "key2": "value2", "key3": "value3" } Iterator iter=json.keys(); while(iter.hasNext()){ String key=iter.next(); 试一试{ Object value=json.get(key); }捕获(JSONException e){ //出了点问题! } }
{
"key1": "value1",
"key2": "value2",
"key3": "value3"
}
Iterator iter=json.keys();
while(iter.hasNext()){
String key=iter.next();
试一试{
Object value=json.get(key);
}捕获(JSONException e){
//出了点问题!
}
}
看看JSONObject引用:
在不实际使用对象的情况下,使用getNames()或keys()返回迭代器似乎是一种方法。您应该使用
keys()
或names()
方法keys()
将为您提供一个迭代器,其中包含对象中的所有字符串属性名称,而names()
将为您提供一个包含所有键字符串名称的数组
您可以在这里获得JSONObject文档
弗朗西回答的简短版本:
Iterator<String> iter = json.keys();
while (iter.hasNext()) {
String key = iter.next();
try {
Object value = json.get(key);
} catch (JSONException e) {
// Something went wrong!
}
}
for(迭代器iter=json.keys();iter.hasNext();){
String key=iter.next();
...
}
您需要使用
迭代器
循环遍历键以获取它们的值
这是一个Kotlin实现,您会意识到我获取字符串的方式是使用optString()
,它需要一个字符串或一个可为空的值
for(Iterator<String> iter = json.keys();iter.hasNext();) {
String key = iter.next();
...
}
注意:您不能使用(字符串s:json.keys()){…}的缩写形式。令人遗憾的是,JSONArray和JSONObject都不可iterable:-(这里的json是什么?json对象、json数组还是其他?@PravinsinghWaghela这是一个JSONObject,在QuestionError链接中指定的。Android中的
JSONObject
没有getNames()
。这里的json是什么?json对象、json数组还是其他东西?json是JsonObject@PravinsinghWaghela非常确定OP询问了如何循环通过json对象。
val keys = jsonObject.keys()
while (keys.hasNext()) {
val key = keys.next()
val value = targetJson.optString(key)
}