1. ホーム
  2. ジャワ

[解決済み] JSON: NULL値を持つオブジェクトをデシリアライズしようとするとJsonMappingExceptionが発生する

2022-03-03 14:36:04

質問

ヌルプロパティを含むオブジェクトをデシリアライズしようとすると JsonMappingException .

私の仕事

String actual = "{\"@class\" : \"PersonResponse\"," +
                "  \"id\" : \"PersonResponse\"," +
                "  \"result\" : \"Ok\"," +
                "  \"message\" : \"Send new person object to the client\"," +
                "  \"person\" : {" +
                "    \"id\" : 51," +
                "    \"firstName\" : null}}";
ObjectMapper mapper = new ObjectMapper();
mapper.readValue(new StringReader(json), PersonResponse.class); //EXCEPTION!

しかし 捨てるなら "firstName = null" プロパティを使用すると、すべて正常に動作します。 次の文字列を渡すという意味です。

String test = "{\"@class\" : \"PersonResponse\"," +
                "  \"id\" : \"PersonResponse\"," +
                "  \"result\" : \"Ok\"," +
                "  \"message\" : \"Send new person object to the client\"," +
                "  \"person\" : {" +
                "    \"id\" : 51}}";
ObjectMapper mapper = new ObjectMapper();
mapper.readValue(new StringReader(json), PersonResponse.class); //ALL WORKS FINE!

質問 : この例外を回避する方法、またはシリアライゼーション時にJacksonがNULL値を無視するように誓約する方法は?

をスローします。

メッセージ

com.fasterxml.jackson.databind.MessageJsonException:
 com.fasterxml.jackson.databind.JsonMappingException:
  N/A (through reference chain: person.Create["person"]->Person["firstName"])

の原因となります。

com.fasterxml.jackson.databind.MessageJsonException:
 com.fasterxml.jackson.databind.JsonMappingException:
  N/A (through reference chain: prson.Create["person"]->Person["firstName"])

の原因となります。 java.lang.NullPointerException

解決方法は?

をシリアライズしない場合 null の値を使用する場合は、以下の設定(シリアライズ時)で使用できます。

objectMapper.setSerializationInclusion(Include.NON_NULL);

これで問題が解決することを願っています。

しかし NullPointerException を処理することができるのが理想的です。 null の値がシリアライズされた出力に含まれます)。に対応するコードを投稿していただけませんか? PersonResponse クラスを作成できますか?