来自API的JSON响应:
{
"result":[
{
"ResultType":"SUCCESS"
}
]
}
转换为ResultClass.class后:
{
"result":[
{
"resultType":null
}
]
}
转换为ResultClass.class后的预期输出:
{
"result":[
{
"resultType":"SUCCESS"
}
]
}
我正在与第三方API集成。我希望在反序列化时更改属性名称。我已经尝试了@jsonProperty对已归档的getter和setter。但是该值未反映在字段resultType中。
result class.Java
@JsonProperty("result")
List<TestClass> result = new ArrayList<>();
public List<TestClass> getResult() {
return result;
}
public void setResult(List<TestClass> result) {
this.result = result;
}
test class.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
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;
}
}