【问题标题】:Java Jackson deserialization for id object that could be object or stringJava Jackson 对可能是对象或字符串的 id 对象进行反序列化
【发布时间】:2015-08-04 21:57:15
【问题描述】:

我正在使用 Jackson 来序列化 id 对象。对象有一个 id 字段。目前,代码在字段上使用@JsonProperty 进行序列化。序列化如下:

“我的身份证”:{ “身份证”:“12345” }

我想在 getter 上使用 @JsonValue,这样将来的序列化将如下所示:

“我的身份证”:“12345”

我需要它与已经序列化的对象向后兼容。我是否需要使用自定义反序列化器,或者是否有基于注释的策略可以完成此操作?

任何建议将不胜感激。

【问题讨论】:

    标签: java annotations jackson


    【解决方案1】:

    可以创建可以从 JSON 对象和 JSON Scalar 反序列化的 POJO。例如:

    public class Id {
      @JsonProperty String id;
    
      @JsonCreator
      public Id(String id) {
          this.id = id;
      }
    }
    

    至于序列化,您可以选择 as-object(只是 getter)或 as-String,后者使用 @JsonValue

    【讨论】:

      猜你喜欢
      • 2019-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-02
      • 2021-06-03
      • 2016-02-08
      • 2019-12-01
      • 1970-01-01
      相关资源
      最近更新 更多