如果两者都存在,我可以让 Jackson fastxml 更喜欢 @JsonProperty 而不是 @JsonAlias 吗?

问题描述 投票:0回答:1

我的 JSON 有效负载曾经是:

{ "a": "some-value" }

我将其映射到:

class Item {

  @JsonProperty("a")
  public String value;

}

现在我想弃用属性

a
并引入一个新属性
b
来代替它。在宽限期内,两者均应被接受。

@JsonAlias
似乎是实现这一目标的最佳方法:

class Item {

  @JsonProperty("b")
  @JsonAlias("a")
  public String value;

}

a
b
存在时,以及当两者都存在并且
b
a
之后时,它可以完美工作:

{ "b": "some-value" }
{ "a": "some-value" }
{ "a": "this-is-ignored", "b": "uses-this-value" }

但是,属性是按顺序处理的,Jackson 将选择最后一个,因此如果已弃用的属性位于最后,则它获胜:

{ "b": "it-should-use-this-value", "a": "but-uses-this-one-instead" }

有没有一种方法可以将 Jackson 配置为始终首选主映射并忽略别名(如果存在多个别名)?

java json jackson
1个回答
0
投票

不。你能做的最好的事情就是为全班定制解串器。

© www.soinside.com 2019 - 2024. All rights reserved.