我想自定义
JsonNullable<Boolean>
反序列化过程。所以我找到了类 JsonNullableDeserializer :
我已经实现了自己的解串器:
public class MyJsonNullableDeserializer extends JsonNullableDeserializer {
private static final long serialVersionUID = 1L;
private boolean isBooleanDeserializer = false;
public JsonNullableDeserializer(JavaType fullType, ValueInstantiator inst,
TypeDeserializer typeDeser, JsonDeserializer<?> deser) {
....
}
}
@Override
public JsonNullable<Object> deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
JsonToken t = p.getCurrentToken();
if (t == JsonToken.VALUE_STRING && isBooleanDeserializer && p.getText().trim().isEmpty() ) {
throw new IllegaArgumentException("....");
}
return super.deserialize(p, ctxt);
}
现在我想注册
MyJsonNullableDeserializer
但不知道如何注册。
我看到班级了
public class JsonNullableDeserializers extends Deserializers.Base {
@Override
public JsonDeserializer<?> findReferenceDeserializer(ReferenceType refType,
DeserializationConfig config, BeanDescription beanDesc,
TypeDeserializer contentTypeDeserializer, JsonDeserializer<?> contentDeserializer) {
return (refType.hasRawClass(JsonNullable.class)) ? new JsonNullableDeserializer(refType, null, contentTypeDeserializer,contentDeserializer) : null;
}
}
看来我得换了
JsonNullableDeserializer
与 MyJsonNullableDeserializer
我不知道如何更换它。你能帮忙吗?
的GitHub页面中README.md的
JsonNullable
部分表示,为了使用它,您需要在您的ObjectMapper
上注册相应的模块。
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
mapper.registerModule(new JsonNullableModule());