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

标签 java json jackson pojo

我有一个类(class):

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

最佳答案

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

class MyClass {
  @Getter
  @Setter
  int a;

  @Getter
  @Setter
  int b;

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

关于java - 忽略反序列化中的计算字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10542504/

相关文章:

java - 更新文本区域 Swing Java

java - 重写 JacksonJsonProvider.writeTo 时,我可以指定用于序列化的 View 吗?

java - JSON 解析错误 : Cannot deserialize instance of. 。超过 START_ARRAY token

java - 优化对象列表的fasterxml ObjectMapper

java - nativeAddLocalStream 中的 Android WebRTC SIGSEGV

Java Mikrotik API

java - 使用 Python 将 JSONObject 转换为 JSONArray

javascript - 在 JavaScript 中格式化 Json、删除重复项和计数元素

c# - 将 List<CustomObject> 转换为 JSON

mysql - 使用 Mysql 在 Go 中创建父子嵌套 json