一尘不染

JSON Jackson将不同的密钥解析到同一字段中

json

我有一个POJO,其中包含一个字段:

public class Media {
 private Asset asset;
}

将json响应解析到此资产POJO时,一切工作正常。但是此资产随附的密钥略有不同。可以是:

  @JsonProperty("cover_asset")

要么

  @JsonProperty("asset")

有没有一种方法可以注释POJO以识别这种情况并反序列化到同一字段中。他们不可能出现在相同的响应中。


阅读 229

收藏
2020-07-27

共1个答案

一尘不染

好吧,因为只有反序列化才是您关心的问题,所以@JsonAlias引入in十分2.9适合这种情况。您可以执行以下操作:

@JsonAlias({"cover_asset", "asset"})
private Asset asset;

@JsonAliasdocs

可用于定义属性的一个或多个替代名称的注释,在反序列化期间可以接受为正式名称的替代。别名信息也在POJO内省期间公开,但在始终使用主名的序列化过程中无效。

注:请确保您更新所有相关的依赖关系(annotationscoredatabind)如果你使用的是他们。在annotations没有其他人的情况下进行更新会引发运行时错误。

2020-07-27