Ответ 1
Это невозможно. Вам необходимо изменить структуру JSON для представления object1
, object2
и т.д. В качестве элементов массива . Прямо сейчас это свойства объекта, из которого он, по-видимому, неизвестно, сколько из них будет (иначе вы не пытались сопоставить его как List
). Gson умный, но не тот умный:)
Итак, в качестве основного примера эта структура JSON с массивом:
{ nodes:
[
{ item1: 'value1a', item2: 'value2a' },
{ item1: 'value1b', item2: 'value2b' },
{ item1: 'value1c', item2: 'value2c' }
]
}
в сочетании с представлением Java (которое необязательно должно называться POJO, а просто javabean или объект модели или объект значения).
public class Container {
private List<Node> nodes;
// +getter.
}
public class Node {
private String item1;
private String item2;
// +getters.
}
и этот вызов Gson
Container container = new Gson().fromJson(json, Container.class);
должен работать.
Обновить: чтобы быть ясным, ваша структура JSON является проблемой, а не вашей структурой объектов Java. Предполагая, что ваша структура объектов Java именно то, что вы хотели бы получить, ваша структура JSON должна выглядеть следующим образом, чтобы заставить Gson выполнять свою работу:
{ jObjects:
[
{ id: 123, jObjects:
[
{ item1: 'value1a', item2: 'value2a' },
{ item1: 'value1b', item2: 'value2b' },
{ item1: 'value1c', item2: 'value2c' }
/* etc... commaseparated */
]
},
{ id: 456, jObjects:
[
{ item1: 'value1d', item2: 'value2d' },
{ item1: 'value1e', item2: 'value2e' },
{ item1: 'value1f', item2: 'value2f' }
/* etc... commaseparated */
]
}
/* etc... commaseparated */
]
}
Только свойство JsonElement
должно быть заменено на String
, так как оно недействительно.