Когда вы используете DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY
, вы можете рассматривать все значения как List
-s.
ObjectMapper mapper = new ObjectMapper();
mapper.enable(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY);
MapType mapType = mapper.getTypeFactory().constructMapType(Map.class, String.class, List.class);
Map<String, List> map = mapper.readValue(jsonFile, mapType);
System.out.println(map);
печать:
{some=[...], someOther=[..., ...], youDontKnow=[...], mayBeThis=[what]}
Без этого вы можете использовать поведение по умолчанию, которое создает соответствующие типы:
ObjectMapper mapper = new ObjectMapper();
Map<String, Object> map = mapper.readValue(jsonFile, Map.class);
System.out.println(map);
печать:
{some=..., someOther=[..., ...], youDontKnow=..., mayBeThis=[what]}
Второе решение требует от вас проверки, является ли оно List
os String
. Первое решение позволяет вам рассматривать каждое значение как List
, и у вас есть очень краткое решение. Третий вариант - создать POJO
с List
, String
свойствами и Jackson
автоматически совпадет и проанализирует данные JSON
.