2012-05-10 145 views
3

计算字段我有一个类:忽略反序列化

class MyClass { 
    @Getter 
    @Setter 
    int a; 

    @Getter 
    @Setter 
    int b; 

    public int getADivB() { 
    return a/b; 
    } 
} 

序列化时,我需要所有三个属性被序列化。然而,如果另一个java进程反序列化消息,我想杰克逊忽略计算的字段。 (不能忽视它一起与@JSONIgnore)

反序列化的代码是:

String json = ... //get json from message 
JsonNode root = this.mapper.readTree(json); 
MyClass abdiv = this.mapper.readValue(root, MyClass.class); 
+2

我只看到两个字段,第三个是哪里? – esej

回答

3

你需要的是注释计算属性与@JsonProperty 所以它看起来就像这样:

class MyClass { 
    @Getter 
    @Setter 
    int a; 

    @Getter 
    @Setter 
    int b; 

    @JsonProperty 
    public int getADivB() { 
    return a/b; 
    } 
} 
0

系列化不会序列化的A/B在该方法中,只有成员字段

2

您可以标注类无线th

@JsonIgnoreProperties(ignoreUnknown = true) 

在反序列化期间,杰克逊将忽略该属性。

相关问题