@shotlandec2
still waters run deep

Как веренуть ключи из массива?

Столкнулся с такой проблемой. Имеем JSONObject. В нем имеем вот такой массив:

{
"12":"value1",
"27":"value2",
"85":"value3",
"34":"value4"
}


Дело в том, что
1. ключи массива могут быть разными (заранее они не известны)
2. количество ключей/значений может быть разное.

Как получить значения (value1, value2, value3...)?

Знаю, что есть статический метод:
JSONObject jsonObject = new JSONObject("{"petr":"Петр","ivan":"Иван"}");
 String[] jsonNames = jsonObject.getNames();


Получив массив имен можно было бы по циклу пройтись и получить значения. А вот у меня getNames окрашивается красным. Получаю подсказку: Cannot resolve method 'getNames()'
  • Вопрос задан
  • 35 просмотров
Решения вопроса 1
@shotlandec2 Автор вопроса
still waters run deep
вопрос решил так:

Сначала поставьте это где-нибудь:
private <T> Iterable<T> iteratorToIterable(final Iterator<T> iterator) {
    return new Iterable<T>() {
        @Override
        public Iterator<T> iterator() {
            return iterator;
        }
    };
}


Затем просто перебирайте ключи объекта и значения:
for (String key : iteratorToIterable(object.keys())) {
    JSONObject entry = object.getJSONObject(key);
    // ...
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Sputterspark
@Sputterspark
Познавательный факт нумеро уно: Эта структура данных называется не массив.

Эн сегундо, можно проще:
for (String key : jsonObject.keys()) {
    String value = jsonObject.getString(key);
}

Нет никакого getNames(), есть names()
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы