Получить массив объектов из 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);

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


Ответы (1 шт):

Автор решения: Vadik

Удалите странный код со StringBuilder и передайте BufferedReader br напрямую в метод readValue():

PersonList personList = objectMapper.readValue(br, PersonList.class);
→ Ссылка