it-swarm.com.ru

Android JSONObject - Как я могу пройтись по плоскому объекту JSON, чтобы получить каждый ключ и значение

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

Как я могу получить ключ и значение каждого элемента, не зная заранее ни ключ, ни значение?

92
user1763763

Используйте итератор 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!
    }
}
284
Franci Penov

Краткая версия ответа Франци:

for(Iterator<String> iter = json.keys();iter.hasNext();) {
    String key = iter.next();
    ...
}
63
Roozbeh Zabihollahi

Вы должны использовать метод keys() или names(). keys() предоставит вам итератор, содержащий все имена свойств String в объекте, а names() даст вам массив всех ключевых имен String.

Вы можете получить документацию по JSONObject здесь

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

3
Mike Brant

Вам нужно будет использовать Iterator для циклического перебора ключей, чтобы получить их значения. 

Вот реализация Kotlin, вы поймете, что способ, которым я получил строку, использует optString(), которая ожидает String или обнуляемое значение.

val keys = jsonObject.keys()
while (keys.hasNext()) {
    val key = keys.next()
    val value = targetJson.optString(key)        
}
0
Delacrix Morgan