Джексон: десериализовать любой json - PullRequest
0 голосов
/ 03 марта 2020

Это не должно быть слишком сложно ... но я, кажется, слеп, и сам не могу найти ответ.

Используя Джексона, я бы хотел десериализовать любой * * JSON на карте Java. Часть Array создает проблему.

любой json может выглядеть следующим образом: { "foo": "bar" } или { "test": [ { "a": 123, "b": "erny" }, { "a": ... and so on

они должны десериализоваться в (псевдокод) :

Map( foo => "bar" )
Map( test => Array( 
    Map( a => 123, b=>erny ),
    Map( a => ... and so on
) )

Мне не безразличны типы массивов и карт, если они есть, и типы значений. (Но было бы неплохо, если бы целые числа были представлены как таковые.)

Если я попытаюсь om.readValue( json, Map.class ), я получу Невозможно десериализовать экземпляр java.lang.String из START_ARRAY Ошибка, если json содержит массив.

Я использую Джексона довольно успешно для всех моих сложных JSON вещей, но как сделать простой?

ПРИМЕЧАНИЕ: Джексон делает именно то, что я хочу сделать с помощью синтаксиса выше. Проблема была ошибка в моем json. Так что этот вопрос не имеет смысла.

**) любой не совсем верно. Каждый JSON, который я использую, является картой на самом низком уровне.

Ответы [ 2 ]

0 голосов
/ 03 марта 2020
@JsonAnyGetter public Map<String, Object> getOtherInfo() { return otherInfo; }
0 голосов
/ 03 марта 2020

Джексон может десериализовать JSON объекты в java.util.Map и JSON массивы в java.util.List

Из вашего сообщения об ошибке кажется, что вы пытаетесь десериализовать массив JSON в java .util.Карта, которая невозможна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...