フィールドが欠落している場合に例外をスローするように Jackson を設定する 質問する

フィールドが欠落している場合に例外をスローするように Jackson を設定する 質問する

次のようなクラスがあります:

public class Person {
  private String name;
  public String getName(){
    return name;
  }
}

次のように構成された ObjectMapper を使用しています。

ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

strこれを含む文字列があります{ "address" : "something" }。json には「name」フィールドがないことに注意してください。次のようにすると:

mapper.readValue(str, Person.class);

すると、実際には名前が null に設定された Person オブジェクトが返されます。代わりに例外をスローするようにマッパーを設定する方法、または Person の代わりに null 参照を返す方法はありますか? Jackson に、欠落しているフィールドを失敗と見なさせ、結果のオブジェクトのフィールドに対して明示的な null チェックを行わないようにしたいです。

ベストアンサー1

Jackson 2.6では、方法であるただし、クラス属性の注釈では機能せず、コンストラクタアノテーション:

/* DOES *NOT* THROW IF bar MISSING */
public class Foo {    
    @JsonProperty(value = "bar", required = true)
    public int bar;
}

/* DOES THROW IF bar MISSING */
public class Foo {
    public int bar;
    @JsonCreator
    public Foo(@JsonProperty(value = "bar", required = true) int bar) {
        this.bar = bar;
    }
}

おすすめ記事