Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android JSONObject-如何循环通过平面JSON对象来获取每个键和值_Java_Android_Json - Fatal编程技术网

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)        
}