如果我對未知屬性禁用失敗:未能對未知屬性W /通知
new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
有沒有遇到未知屬性時得到通知的方式?這樣我可以輸出日誌消息?
如果我對未知屬性禁用失敗:未能對未知屬性W /通知
new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
有沒有遇到未知屬性時得到通知的方式?這樣我可以輸出日誌消息?
DeserializationProblemHandler
類似乎做你想做的。
它可以讓你實現這個方法來處理未知屬性:
boolean handleUnknownProperty(DeserializationContext ctxt,
JsonParser jp, JsonDeserializer<?> deserializer,
Object beanOrClass, String propertyName)
根據文檔:
方法調用時帶不認可 一個JSON地圖(「對象」)進入遇到名稱。
您可以使用DeserializationConfig.withHandler(DeserializationProblemHandler h)
方法在您的DeserializationConfig
對象上註冊自定義處理程序。
的DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES
的Javadoc說:
功能,可以確定是否未知屬性(那些沒有映射到一個屬性,以及遇到沒有「任何二傳手」或處理器可以處理它)應該導致失敗(通過拋出JsonMappingException)。
關鍵字這裏是「處理」,所以尋找處理程序,你會發現方法DeserializationConfig.withHandler(DeserializationProblemHandler h)
,並且DeserializationProblemHandler
的javadoc說:
這是可以註冊的類(通過
DeserializationConfig
對象所有者通過ObjectMapper
)在反序列化過程中遇到潛在可恢復問題時被調用。 處理程序可以嘗試解決問題,拋出異常或什麼都不做。
在你的情況下,你想記錄問題,然後「什麼都不做」。
所以,有點研究的javadoc提供了一個答案給你的問題。