我有一个班级:
class MyClass {
@Getter
@Setter
int a;
@Getter
@Setter
int b;
public int getADivB() {
return a / b;
}
}
序列化时我需要序列化所有三个属性。但是如果另一个java进程反序列化消息,我希望jackson忽略计算字段。 (不要像@JSONIgnore一样忽略它)
反序列化代码是:
String json = ... //get json from message
JsonNode root = this.mapper.readTree(json);
MyClass abdiv = this.mapper.readValue(root, MyClass.class);
答案 0 :(得分:3)
您需要的是使用@JsonProperty
为计算属性添加注释
所以它看起来像这样:
class MyClass {
@Getter
@Setter
int a;
@Getter
@Setter
int b;
@JsonProperty
public int getADivB() {
return a / b;
}
}
答案 1 :(得分:2)
您可以使用
为您的班级添加注释@JsonIgnoreProperties(ignoreUnknown = true)
让杰克逊在反序列化期间忽略该属性。
答案 2 :(得分:0)
序列化不会序列化方法中的a / b,只会序列化成员字段