如何确保 Jackson 中包含字段
How to ensure field inclusion in Jackson
我有一个 POJO,我想从 JSON 创建这个 class 的实例。我正在使用 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 应该失败。我怎样才能做到这一点?这个有注释吗?
好吧,有一个注释可以应用于您的属性,表明它们是必需的。
@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)
我有一个 POJO,我想从 JSON 创建这个 class 的实例。我正在使用 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 应该失败。我怎样才能做到这一点?这个有注释吗?
好吧,有一个注释可以应用于您的属性,表明它们是必需的。
@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)