3

私はクラスを持っています:

class MyClass {
  @Getter
  @Setter
  int a;

  @Getter
  @Setter
  int b;

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

シリアル化するときは、3つのプロパティすべてをシリアル化する必要があります。ただし、別のJavaプロセスがメッセージを逆シリアル化している場合は、jacksonに計算フィールドを無視してもらいたいと思います。(@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 に答える