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

标签 java json jackson

使用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/

相关文章:

java - 使用流生成 map 时忽略重复项

c - 如何解析json int数组?

ruby - Ruby 中的 JSON 解析

java - Jackson 为同一类提供多个 ObjectMapper

java - 如何使用 Jackson 将复杂的 Json 对象序列化为 HTTP Get 的 QueryString?

java - 有时与 Android 的 JDBC 连接不起作用

java - 使用 jsoup 解析 <META 内容 ="">

java - Teradata 和 JDBC 驱动程序 - classnotfoundexception ...但它在那里?

java - 使用 Jackson 转换器将嵌套的 json 绑定(bind)到 @RequestBody 对象

java - Jackson 可以使用它没有编写的 boolean JSON 属性反序列化为具体子类吗?