Мы решили это следующим образом:
Это отлично сработало для меня
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
Ваша строка json не соответствует встроенному классу. Измените строку ввода
String jsonStr = "{\"students\"\:[{\"id\":\"13\",\"name\":\"Fred\"}]}";
Или измените свой сопоставленный класс
public class Wrapper {
private List<Student> wrapper;
//getters & setters here
}
Google привел меня сюда, и я был удивлен, увидев ответы ... все предложили обойти ошибку (, которая всегда отклоняется на 4 раза позже в процессе разработки ), а не решить ее пока этот джентльмен не восстановлен верой в SO!
objectMapper.readValue(responseBody, TargetClass.class)
используется для преобразования строки json в объект класса, чего не хватает, так это тому, что TargetClass
должен иметь public get
тер / set
терс. То же самое отсутствует в фрагменте вопроса ОП тоже! :)
через ломбок ваш класс, как показано ниже, должен работать !!
@Data
@Builder
public class TargetClass {
private String a;
}
Первый ответ почти правильный, но необходимо изменить метод получения, а НЕ поле - поле является закрытым (и не определяется автоматически); кроме того, геттеры имеют приоритет над полями, если оба видны. (Есть также способы сделать приватные поля видимыми, но если вы хотите получить геттер, нет особого смысла)
Так что геттер должен быть либо назван getWrapper()
или помечены:
@JsonProperty("wrapper")
Если вы предпочитаете имя метода получения как есть.
То, когда мы генерируем методы считывания и методы set, особенно который запускается с, 'является' ключевым словом, IDE обычно удаляет. например,
private boolean isActive;
public void setActive(boolean active) {
isActive = active;
}
public isActive(){
return isActive;
}
В моем случае, я просто изменил метод считывания и метод set.
private boolean isActive;
public void setIsActive(boolean active) {
isActive = active;
}
public getIsActive(){
return isActive;
}
И это смогло распознать поле.
В моем случае я должны добавить общедоступные методы считывания и методы set для отъезда полей частными.
ObjectMapper mapper = new ObjectMapper();
Application application = mapper.readValue(input, Application.class);
я использую jackson-привязку-данных 2.10.0.pr3.
импорт com.fasterxml.jackson.annotation. JsonIgnoreProperties;
@JsonIgnoreProperties
опция FAIL_ON_UNKNOWN_PROPERTIES верна по умолчанию:
FAIL_ON_UNKNOWN_PROPERTIES (default: true)
Used to control whether encountering of unknown properties (one for which there is no setter; and there is no fallback "any setter" method defined using @JsonAnySetter annotation) should result in a JsonMappingException (when enabled), or just quietly ignored (when disabled)