在Java中反序列化响应时更改属性的名称

在Java中反序列化响应时更改属性的名称,java,json,rest,jackson,Java,Json,Rest,Jackson,来自API的JSON响应: { "result":[ { "ResultType":"SUCCESS" } ] } 转换为ResultClass.class后: { "result":[ { "resultType":null } ] } 转换为ResultClass.class后的预期输出: { "result":[ { "resultType":

来自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;
}
@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

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;
    }
}

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