Это невозможно. Вам необходимо изменить структуру 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
, так как оно недействительно.