【问题标题】:Change name of property while deserializing response in Java在 Java 中反序列化响应时更改属性名称
【发布时间】:2019-02-22 03:36:04
【问题描述】:

来自 API 的 JSON 响应:

{
   "result":[
      {
         "ResultType":"SUCCESS"
      }
   ]
}

转换为 ResultClass.class 后:

{
   "result":[
      {
         "resultType":null
      }
   ]
}

转换为 ResultClass.class 后的预期输出:

{
   "result":[
      {
         "resultType":"SUCCESS"
      }
   ]
}

我正在与第三方 API 集成。我想在反序列化时更改属性名称。我已在归档的 getter 和 setter 上尝试过 @JsonProperty。但该值未反映在字段 resultType 中。

ResultClass.java

@JsonProperty("result")
List<TestClass> result = new ArrayList<>();

public List<TestClass> getResult() {
        return result;
}

public void setResult(List<TestClass> result) {
    this.result = result;
}

TestClass.java

@JsonProperty("ResultType")
private String resultType;

public String getResultType() {
        return resultType;
}

public void setResultType(String resultType) {
        this.resultType = resultType;
}

注意:我已经尝试过 JsonObject,它工作正常。我正在使用 HttpClient 和 HttpResponse 发出请求。Jackson 版本:2.5.0

【问题讨论】:

  • 你在输出中实际得到了什么?你也可以添加吗?
  • {"result":[{"ResultType":"SUCCESS"}]} 并在转换后 {"result":[{"resultType":null}]}
  • 我添加了详细信息@MaruthiAdithya
  • 如果你在getter和setter上加上@JsonProperty("ResultType"),你会得到什么输出?
  • 我测试了你的代码,一切正常!

标签: java json rest jackson


【解决方案1】:

有2个解决方案:

1.进行不区分大小写的反序列化

在您的对象映射器上添加此功能:

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);

2。使用不同的属性名称进行序列化和反序列化

要将属性名称ResultType 更改为resultType,您应该同时使用@JsonGetter@JsonSetter

import com.fasterxml.jackson.annotation.JsonGetter;
import com.fasterxml.jackson.annotation.JsonSetter;

public class TestClass {

    private String resultType;

    @JsonGetter("resultType")
    public String getResultType() {
        return resultType;
    }

    @JsonSetter("ResultType")
    public void setResultType(String resultType) {
        this.resultType = resultType;
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    相关资源
    最近更新 更多