Преобразование объекта JSON с несколькими списками в виде полей - PullRequest
0 голосов
/ 20 ноября 2018

Я использую ObjectMapper Джексона для преобразования файлов JSON в объекты Java.Как мне преобразовать объект JSON, у которого массив является одним из его полей?Пример ниже:

{
  "list":[
    {
      "value":"example"
    },
    {
      "value":"example2"
    }
  ]
}

ObjectMapper преобразует это в LinkedHashMap с lines в качестве ключа и значением является ArrayList с LinkedHashMaps, которые имеют value и example и так далее.

Есть ли способ прочитать этот json как объект с полем list, который представляет собой список / массив, содержащий объекты, которые подходят (в данном случае, простой объект с String value в качестве поля)

Ответы [ 2 ]

0 голосов
/ 20 ноября 2018

Вы можете достичь этого с Джексоном прямым способом.Для этого вам нужно смоделировать структуру JSON с помощью некоторых классов Java.

Во-первых, вам нужен класс для моделирования всего содержимого JSON (назовем его Root) со свойством list.

public class Root {

    private List<Item> list;

    // public getter and setter (omitted here for brevity)
}

Далее вам нужен класс для моделирования элементов списка (назовем его Item) со свойством value.

public class Item {

    private String value;

    // public getter and setter (omitted here for brevity)
}

Затем вы можете читать JSONсодержимое в объект Java Root, используя один из ObjectMapper readValue(..., Class<T>) методов.Например, чтение из File:

ObjectMapper objectMapper = new ObjectMapper();
Root root = objectMapper.readValue(new File("example.json"), Root.class);
0 голосов
/ 20 ноября 2018

Нашел способ сделать это.Это решение основано на Gson вместо ObjectMapper.По сути, Gson удается преобразовывать массивы в поля, как я хотел, чтобы это происходило здесь, вместо генерации большого количества LinkedHashMaps.

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