Как вы справляетесь с массивами, которые написаны как объекты в gson?

#java #android #json #gson

#java #Android #json #gson

Вопрос:

Я пишу клиент для API, который предоставляет мне данные JSON таким образом:

 "Thing": {
        "0": {
        ...
        },
        "1": {
        ...
        },
        "2": {
        ...
        }
}
  

Поскольку я пытаюсь поместить это в список, я получаю сообщение об ошибке:

 Expected BEGIN_ARRAY but was BEGIN_OBJECT 
  

Я не хочу добавлять HashMap к моему объекту Java, я хотел бы найти способ заставить gson правильно его преобразовать. Есть ли способ сделать это?

Спасибо!

Комментарии:

1. выполнить итерацию по всем объектам?

2. Массив должен начинаться с [ .

Ответ №1:

Вы можете поместить объект в HashMap, а после преобразовать его в список:

 HashMap<Integer, String> yourMapFromJSON = new ObjectMapper().readValue(JSON_SOURCE, HashMap.class);
List<String> list = new ArrayList<String>(yourMapFromJSON.values());
  

Ответ №2:

В случае, если ваша модель содержит array вместо Map, у вас есть два варианта.

  • проанализируйте JSON в Map, а затем извлеките из него значения.
  • создайте специальный анализатор для этого случая.