使用fasterxml jackson映射器,在尝试将相同的json键映射到pojo中的多个变量时遇到异常。但是某些用例需要映射,因此是否有任何工作选项可以克服这个问题,解决 pojo 中的任何更改。
异常(exception):
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
...
}
处理 setter
与上面提到的方法类似,您可以采用以下方法:
- 创建一个用
@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/