如何确保杰克逊的领域包容性

时间:2015-04-15 11:21:31

标签: java jackson

我有一个POJO,我想从JSON创建这个类的实例。我使用jackson将JSON转换为Object。我想确保JSON能够获得我的POJO的所有属性。 JSON可能包含其他额外字段,但必须包含POJO的所有属性。

示例:

class MyClass {
    private String name;
    private int age;

    public String getName(){return this.name;}
    public void setName(String name){this.name = name;}
    public int getAge(){return this.age;}
    public void setAge(int age){this.age = age;}
}

JSON#1

{
    "name":"Nayan",
    "age": 27,
    "country":"Bangladesh"
}

JSON#2

{
    "name":"Nayan",
    "country":"Bangladesh"
}

在这里,我希望JSON#1成功转换为MyClass,但JSON#2应该失败。我怎样才能做到这一点?是否有注释?

1 个答案:

答案 0 :(得分:0)

嗯,有一个注释可以应用于你的属性,说它们是必需的。

@JsonProperty(required = true)
public String getName(){ return this.name; }

不好的部分是,截至目前(2.5.0),不支持反序列化验证。

...
Note that as of 2.0, this property is NOT used by BeanDeserializer: support is expected to be added for a later minor version.

2013年有一个未解决的问题是添加验证:Add support for basic "is-required" checks on deserialization using @JsonProperty(required=true)