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

3 回答 3

3

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

class MyClass {
  @Getter
  @Setter
  int a;

  @Getter
  @Setter
  int b;

  @JsonProperty
  public int getADivB() {
    return a / b;
  }
}
于 2012-06-19T22:58:26.317 回答
3

你可以用注释你的类

@JsonIgnoreProperties(ignoreUnknown = true)

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

于 2012-07-12T11:27:49.907 回答
0

序列化不会序列化方法中的a/b,只会序列化成员字段

于 2012-05-10T21:56:25.927 回答