gpt4 book ai didi

java - Jackson - 将单个 json 键映射到多个变量

转载 作者:行者123 更新时间:2023-11-29 04:45:59 24 4
gpt4 key购买 nike

使用 fasterxml jackson 映射器,在尝试将相同的 json 键映射到 pojo 中的多个变量时出现异常。但是一些用例需要映射,那么是否有任何工作选项可以解决这个问题,解决 pojo 中的任何变化。

异常:

Conflicting setter definitions for property "vno"

json :

{"vno":"123556"}

pojo:

@JsonProperty(value="vno")
public String getVno(String vno)

@JsonProperty(value="vno")
public String getIdno(String idno)

最佳答案

问题

您的 POJO 中不能有两个 vno 映射属性:

@JsonProperty(value = "vno")
public void setVno(String vno) {
...
}

@JsonProperty(value = "vno")
public void setIdno(String idno) {
...
}

处理 setter/getter

你可以做的是:

  • 创建一个用 @JsonProperty 注释的方法决定将为 vno 属性返回哪个值。
  • @JsonIgnore 注释其他 getter 方法.

更多详细信息,请参见以下代码:

@JsonIgnore
public String getVno() {
...
}

@JsonIgnore
public String getIdno() {
...
}

@JsonProperty(value = "vno")
public String getValueForVnoProperty() {
// Decide which value will be returned
...
}

处理二传手

类似于上面提到的方法,您可以有以下内容:

  • 创建一个用 @JsonProperty 注释的方法决定在哪个属性中设置 vno 属性的值。
  • @JsonIgnore 注释其他 setter 方法.

请看下面的一段代码:

@JsonIgnore
public void setVno(String vno) {
...
}

@JsonIgnore
public void setIdno(String idno) {
...
}

@JsonProperty(value = "vno")
public void setValueForVnoProperty(String value) {
// Decide in which property the value will be set
...
}

关于java - Jackson - 将单个 json 键映射到多个变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37179750/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com