忽略反序列化中的计算字段

时间:2012-05-10 21:36:16

标签: java json jackson pojo

我有一个班级:

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);

3 个答案:

答案 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,只会序列化成员字段