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

时间:2015-08-04 21:57:16

标签: java annotations jackson

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

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

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

“myId”:“12345”

我需要向后兼容已经序列化的对象。我是否需要使用自定义反序列化器,或者是否有基于注释的策略来实现此目的?

非常感谢任何建议。

1 个答案:

答案 0 :(得分:1)

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

public class Id {
  @JsonProperty String id;

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

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