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

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

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

Ответ 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!
    }
}

Ответ 2

Короткий вариант ответа Франки:

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

Ответ 3

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

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

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

Ответ 4

Франци Пенов Ответ правильный. Многие люди поступили неправильно, не зная разницы между JsonObject и JSONObject.

Ответ 5

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

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

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

Ответ 6

Взгляните на ссылку JSONObject:

http://www.json.org/javadoc/org/json/JSONObject.html

Без фактического использования объекта он выглядит как с помощью getNames() или keys(), который возвращает Iterator - путь.