Я пытаюсь сделать экономную десериализацию для Jackason обратно совместимой
ObjectMapper mapper = getObjectMapper(false /* pretty */);
mapper.configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL, true); // This works
// This doesn't work
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
MapLikeType t = mapper.getTypeFactory().constructMapLikeType(LinkedHashMap.class, keyClass, valueClass);
return mapper.readValue(content, t);
valueClass
имеет следующий тип
public class MyThrift implements org.apache.thrift.TBase<MyThrift, MyThrift._Fields>, java.io.Serializable, Cloneable, Comparable<MyThrift> {
Я продолжаю получать
com.fasterxml.jackson.databind.exc.InvalidFormatException: Can not construct instance of com.MyThrift$_Fields from String value 'MY_ID': value not one of declared Enum instance names
если я использую FAIL_ON_UNKNOWN_PROPERTIES
Но я не получаю ту же ошибку, если использую READ_UNKNOWN_ENUM_VALUES_AS_NULL
, может кто-нибудь указать мне, почему использование FAIL_ON_UNKNOWN_PROPERTIES
не работает?
Связывает ли Джакасон не поддержку FAIL_ON_UNKNOWN_PROPERTIES
для экономии?