2017-04-03 1 views
2

/wの未知の性質に失敗:は通知

new ObjectMapper().configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)

は、未知のプロパティに遭遇したときに通知する方法はありますか?私はログメッセージを出力できますか?

答えて

2

DeserializationProblemHandlerクラスは、あなたが望むことをするようです。

それはあなたが、未知のプロパティを処理するために、このメソッドを実装することができます:

boolean handleUnknownProperty(DeserializationContext ctxt, 
     JsonParser jp, JsonDeserializer<?> deserializer, 
     Object beanOrClass, String propertyName) 

ドキュメントによると:認識されていない とJSONマップ(「オブジェクト」)エントリと呼ば

方法を名前が遭遇した。

DeserializationConfigオブジェクトにカスタムハンドラを登録するには、DeserializationConfig.withHandler(DeserializationProblemHandler h)メソッドを使用します。 DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES

1

Javadocは言う:(不明なプロパティの遭遇かどうかをプロパティにマップされないものを決定し、それを扱うことができます何「任意のセッター」またはハンドラがない

特集)は失敗します(JsonMappingExceptionをスローすることによって)。

ここでのキーワードはそうハンドラを探して、あなたが方法DeserializationConfig.withHandler(DeserializationProblemHandler h)を見つけることができます、「ハンドラ」であり、DeserializationProblemHandlerのjavadocは言う:

これはDeserializationConfigオブジェクト経由(登録することができるクラスです所有者はObjectMapper)、逆シリアル化処理中に回復可能な問題が発生した場合に呼び出されます。 ハンドラは、問題の解決、例外のスローまたは何もしないでください。

あなたの場合は、問題をログに記録してから「何もしない」とします。

javadocのリサーチがあなたの質問に答えました。

関連する問題