Имея следующий json фрагмент:
"Location": {
"Address": ""
},
И мой Pojo
public class Address implements Serializable
{
@JsonProperty("City")
private String city;
@JsonProperty("StateProvinceCode")
private String stateProvinceCode;
@JsonProperty("PostalCode")
private String postalCode;
@JsonProperty("CountryCode")
private String countryCode;
private final static long serialVersionUID = -4475717488164417476L;
/**
* No args constructor for use in serialization
*
*/
public Address() {
}
/**
*
* @param city
* @param countryCode
* @param postalCode
* @param stateProvinceCode
*/
public Address(String city, String stateProvinceCode, String postalCode, String countryCode) {
super();
this.city = city;
this.stateProvinceCode = stateProvinceCode;
this.postalCode = postalCode;
this.countryCode = countryCode;
}
getters and settes ...
Я получил com.faster xml .jackson.databind.ex c .MismatchedInputException : Невозможно создать экземпляр com.xxx.Address
(хотя существует хотя бы один создатель): нет конструктора аргумента строки / фабричного метода для десериализации из значения строки ('') \ n в [Source: UNKNOWN; строка: -1, столбец: -1]
Что кажется довольно очевидным, пустая строка не может быть десериализована как адрес. Проблема здесь в том, что иногда ответ приходит в виде пустой строки, а другие - в виде полного адреса Obje c.
Как я могу настроить Jackson objectMapper, чтобы он велел игнорировать наличие пустой строки ??
Этот ответ поступил из внешнего источника, поэтому я не могу изменить этот ответ.
Вот моя конфигурация Object Mapper
@Bean
public ObjectMapper objectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.registerModule(new Jdk8Module());
mapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
mapper.configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES, false);
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
return mapper;
}
Дополнительное примечание: классы Pojo генерируются с использованием подключаемого модуля jsonschema2pojo и основаны на json схемах