#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, а затем извлеките из него значения.
- создайте специальный анализатор для этого случая.