如何在序列化期间忽略字段,而不是在反序列化期间忽略?

gst*_*low 2 java serialization json jackson deserialization

我有一个POJO课程

class Human{
    String name;
    Integer age;
    //get and set
}
Run Code Online (Sandbox Code Playgroud)

当我将json反序列化为一个Human对象时,我想要读取两个字段(agename值).但是当我将一个Human对象序列化为json时,我想忽略它age.

这可能吗 ?

Sot*_*lis 9

的javadoc的@JsonIgnore状态

另外,从Jackson 1.9开始,如果这是与属性关联的唯一注释,它也会导致整个属性被忽略:也就是说,如果setter有这个注释而getter没有注释,getter也会被忽略.不同的访问者仍然可以使用不同的注释; 因此,如果只忽略"getter",其他访问器(setter或field)将需要显式注释来防止ignoral(通常是JsonProperty).

所以只需适当地注释getter和setter

// for serialization
@JsonIgnore 
public String getName() {
    return name;
}
// for deserialization
@JsonProperty("name")
public void setName(String name) {
    this.name = name;
}
Run Code Online (Sandbox Code Playgroud)