Получил ошибку, когда мытался десериализовать ответ в Jackson
org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: Can not construct instance of org.proj.model.profile.Profile, problem: Should never call 'set' on setterless property
at [Source: sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@2d881384; line: 10, column: 1] (through reference chain: java.util.ArrayList[0]); nested exception is com.fasterxml.jackson.databind.JsonMappingException: Can not construct instance of org.proj.model.profile.Profile, problem: Should never call 'set' on setterless property
at [Source: sun.net.www.protocol.http.HttpURLConnection$HttpInputStream@2d881384; line: 10, column: 1] (through reference chain: java.util.ArrayList[0])
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:208)
at org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:200)
В этом месте, я добавил в конструктор Profile еще одну переменную
@JsonProperty("childrens") List<String> childrens
и появилась ошибка после вызова:
return restClient.exchange(PROFILES_URL + "/name" + path, HttpMethod.GET, restClient.makeHttpEntityWithAuth(), new ParameterizedTypeReference<Collection<Profile>>() {
});
Искал в иентернете по названию ошибки, не нашел.
Класс Profile:
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class Profile{
private final String id;
private final List<String> childrens;
public Profile(
@JsonProperty("id") String id,
@JsonProperty("childrens") List<String> childrens) {
this.id = id;
this.childrens = childrens;
}
public String getId() {
return id;
}
public List<String> getChildrens() {
return childrens;
}
В чем может быть дело?
Вы забыли про @JsonCreator
у конструктора. Поэтому Jackson и пытается использовать Setter вместо constructor, а setter'а у вас как раз и нет.
@JsonCreator //here
public Profile(
@JsonProperty("id") String id,
@JsonProperty("childrens") List<String> childrens) {
this.id = id;
this.childrens = childrens;
}
Вот еще немного по теме
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня есть файл relationsjson, в котором отражена структура {id, node, parent, level}, где:
Приветствую! Между клиентом и сервером через WebSocket как в синхронном, так и асинхронном режиме периодически возникает задержка пересылки...