Java 在未知属性上失败,并发出通知

Java 在未知属性上失败,并发出通知,java,jackson,Java,Jackson,如果禁用未知属性上的故障: boolean handleUnknownProperty(DeserializationContext ctxt, JsonParser jp, JsonDeserializer<?> deserializer, Object beanOrClass, String propertyName) newObjectMapper().configure(UNKNOWN属性上的反序列化功能.FAIL,false) 当遇到未知属

如果禁用未知属性上的故障:

boolean handleUnknownProperty(DeserializationContext ctxt,
        JsonParser jp, JsonDeserializer<?> deserializer,
        Object beanOrClass, String propertyName)
newObjectMapper().configure(UNKNOWN属性上的反序列化功能.FAIL,false)

当遇到未知属性时,是否有方法得到通知?这样我就可以输出一条日志消息了?

这个类似乎在做你想做的事情

它允许您实现此方法来处理未知属性:

boolean handleUnknownProperty(DeserializationContext ctxt,
        JsonParser jp, JsonDeserializer<?> deserializer,
        Object beanOrClass, String propertyName)
boolean handleUnknownProperty(反序列化上下文ctxt,
JsonParser jp,JsonDeserializer反序列化程序,
对象beanOrClass,字符串propertyName)
根据文件:

当JSON映射(“对象”)项具有无法识别的 遇到名称

您可以使用以下方法在
反序列化配置
对象上注册自定义处理程序

的Javadoc说:

确定遇到未知属性(不映射到属性的属性,并且没有可以处理它的“任何setter”或处理程序)是否会导致失败(通过抛出JsonMappingException)的功能

这里的关键字是“handler”,所以要查找handler,可以找到method,的javadoc说:

当反序列化过程中遇到潜在的可恢复问题时,可以注册(通过
反序列化配置
对象所有者
ObjectMapper
)以调用该类处理程序可以尝试解决问题、抛出异常或不执行任何操作。

在您的情况下,您希望记录问题,然后“什么也不做”

所以,对javadoc的一些研究为您的问题提供了答案