В API, который я пытаюсь использовать с Spring RestTemplate, я получаю необязательное поле, как показано в примере ниже. Это необязательное поле является вложенным объектом, и я хотел бы использовать вложенный класс для его сопоставления.
{
"name": "John",
"age": 30
}
{
"name": "John",
"age": 30,
"car": {
"year": 1984,
"color": "red"
}
}
Мое текущее определение класса:
public class User {
public class Car {
@Getter
@Setter
public String color;
@Getter
@Setter
public Integer year;
}
@Getter
@Setter
public String name;
@Getter
@Setter
public Integer age;
@Getter
@Setter
public Car car;
}
С вызовом:
ResponseEntity<User> response = restTemplate.exchange("http://....", HttpMethod.POST, request, User.class);
Я получаю следующее исключение:
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of '....User$Car' (although at least one Creator exists): can only instantiate non-static inner class by using default, no-argument constructor
Как можно получить свойство car
либо null
, либо создать его в классе Car
если узел присутствует в json?