次のようなクラスがあります:
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;
}
}