Java 可以是对象或字符串的 id 对象的 Jackson 反序列化

Java Jackson deserialization for id object that could be object or string

我正在使用 Jackson 序列化 id 对象。对象具有一个 id 字段。目前代码在字段上使用@JsonProperty 进行序列化。序列化看起来像这样:

"myId":{ "id":“12345” }

我想在 getter 上使用 @JsonValue 以便将来的序列化看起来像:

"myId":“12345”

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

如有任何建议,我们将不胜感激。

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

public class Id {
  @JsonProperty String id;

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

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