Десериализовать свойство JSON в данный класс - PullRequest
0 голосов
/ 25 января 2019

Я могу десериализовать массив JSON

"[{...}, {...}, {...}]"

в определенный класс, выполнив это

mapper.readValue(jsonString, Station[].class)

Однако в действительности мой JSON выглядит так

"{stations: [{...}, {...}, {...}]}"

Я просто хотел бы выбрать свойство "station" и десериализовать его, как и раньше, но я не смог найти ни одного примера или полезной информации в javadocs о том, как этого добиться !!

Некоторые псевдокоды могут выглядеть следующим образом:

mapper.readValue(jsonString.stations, Station[].class)

Хотя, очевидно, это не сработает.

Я попытался прочитать JSON в JsonNode, оттуда я могу выбирать станции, используя узел.get ("станции"), но как мне тогда преобразовать это в массив Station ???

Я удивлен, что мне нужно открыть ТАК вопрос для чего-то столь тривиального ... Gson гораздо удобнее, но это устаревший продукт.

1 Ответ

0 голосов
/ 26 января 2019

Предположим, у вас есть строка JSON, подобная этой:

"{\"stations\": [{...}, {...}, {...}]}"

Затем вы можете десериализовать его, используя TypeReference:

Map<String, Station[]> map = mapper.readValue(jsonString,
                                              new TypeReference<Map<String, Station[]>>(){});
Station[] stations = map.get("stations");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...