Вы можете разобрать его на карту (как сказал @teppic) и затем получить значения карты в виде списка.
Чтобы десериализовать в карту, вы можете увидеть ответ на этот вопрос: Десериализация в HashMap пользовательских объектов с Джексоном
TypeFactory typeFactory = mapper.getTypeFactory();
MapType mapType = typeFactory.constructMapType(HashMap.class, String.class, Theme.class);
HashMap<String, Theme> map = mapper.readValue(json, mapType);
Предполагая, что у вас есть класс с именем Item
с полями id
и name
, вы можете сделать это:
String json = "{\"1\":{\"id\":\"1\",\"name\":\"some object\"},\"5\":{\"id\":\"2\",\"name\":\"another object\"}}";
ObjectMapper mapper = new ObjectMapper();
// create your map type <String, Item>
TypeFactory typeFactory = mapper.getTypeFactory();
MapType mapType = typeFactory.constructMapType(HashMap.class, String.class, Item.class);
HashMap<String, Item> map = mapper.readValue(json, mapType);
// get the list
List<Item> list = new ArrayList<Item>(map.values());
System.out.println(list);
Выход:
[Item [id=1, name=some object], Item [id=2, name=another object]]
Другим вариантом будет пользовательский десериализатор или чтение дерева, как вы упомянули.