07
Авг
2022

Получить массив объектов из JSON Jackson

Всем привет! Пожалуйста, помогите разобраться с Jackson парсером из JSON: Сам JSON:

    {
    "person": [
      {"name": "Jon Doye"},
      {"name": "Joahna Doye"}
    ]
  }

Мои классы:

Класс PersonList:

public class PersonList {
    List<Person> person;

    public List<Person> getPerson() {
        return person;
    }

    public void setPerson(List<Person> person) {
        this.person = person;
    }
}

Класс Person:

public class Person {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

Так же парсер:

public static InputData readJsonFile(String path){
        try(BufferedReader br = new BufferedReader
                (new InputStreamReader(new FileInputStream(path), UTF_8))){
            StringBuilder stringBuilder = new StringBuilder();
            while(br.read() > -1){
               stringBuilder.append(br.readLine());
            }
            ObjectMapper objectMapper = new ObjectMapper();
            PersonList personList = objectMapper.readValue(stringBuilder.toString(), PersonList.class);
            System.out.println(personList);
       ...
    }

При компиляции возвращает ошибку:

Cannot construct instance of `domain.input.testdata.PersonList` (although at least one Creator exists): no String-argument constructor/factory method to deserialize from String value ('person')
 at [Source: (String)"   "person": [     {"name": "Jon Doye"},     {"name": "Joahna Doye"}   ] } "; line: 1, column: 4]

При этом JSON в формате:

{[
  {"name": "Jon Doye"},
  {"name": "Joahna Doye"}
]}

Будет работать нормально с кодом:

ObjectMapper objectMapper = new ObjectMapper();
List<Person> personList = objectMapper.readValue(stringBuilder.toString(), new TypeReference<List<Person>>() {});
System.out.println(personList);

Наведите пожалуйста на мысль, что делаю не так?

Источник: https://ru.stackoverflow.com/questions/1437179/%D0%9F%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C-%D0%BC%D0%B0%D1%81%D1%81%D0%B8%D0%B2-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82%D0%BE%D0%B2-%D0%B8%D0%B7-json-jackson

Тебе может это понравится...

Добавить комментарий