Json со строками и массивами на карту - PullRequest
0 голосов
/ 22 марта 2019

Скажи, что у меня есть

{
   "foo" : "bar",
   "other-foo": "baz",
   "list-foo" : [
      "x": "y",
      "w":"z"
    ]
}

Как я могу сделать это Map? Я знаю, что могу использовать Джексона ... Но я не могу назвать это Map<String, String> или Map<String, Object> или Map<String, List>, есть ли хороший чистый способ, или это ответ на создание объекта, который представляет это полностью вниз

1 Ответ

2 голосов
/ 22 марта 2019

Если вы не предоставите целевой класс или TypeReference

  • Джексон автоматически десериализует объект json в Map<String,Object>, фактически реализуемый LinkedHashMap<String,Object>, который сохраняет порядок свойств, найденных в JSON.

  • На карте будет запись с ключом «list-foo» и значением Map<String,Object>.

Или вы можете определить специализированные классы для десериализации Джексона.

Джексон десериализуется в классы, которые вы определите, если это возможно.

Если вы предоставите Джексону Class или TypeReference в качестве цели, он попытается создать экземпляр запрошенного класса.

Как правило, вы можете предоставить класс, который соответствует одному из этих критериев

  • Этот класс является компонентом с общедоступными установщиками, которые следуют соглашениям о присвоении имен.

  • В классе есть открытые поля-члены, соответствующие именам свойств json.

  • В классе есть общедоступные методы сеттера с аннотациями Джексона.

  • Класс реализует интерфейс JsonSerializable и имеет метод сериализации.

  • Или, если вы создали собственный сериализатор и связали его с классом с помощью аннотаций Джексона.

Любые поля-члены класса также могут быть десериализованы на основе тех же критериев или если они представляют собой примитивные типы, перечисления или коллекции Java, распознаваемые Джексоном.

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