【发布时间】:2019-02-11 20:31:04
【问题描述】:
我想在 java pojo 中将一个 json 字段设置为两个属性。当我在 pojo 中将 jsonproperty 用于重复属性时,每次都有一个字段为空。
我的 pojo 对象是;
public class PojoTest {
private String receiverAccountNo;
private String originalReceiverAccountNo;
@JsonProperty("receiverAccountNo")
public String getOriginalReceiverAccountNo() {
return originalReceiverAccountNo;
}
@JsonProperty("receiverAccountNo")
public void setOriginalReceiverAccountNo(String originalReceiverAccountNo) {
this.originalReceiverAccountNo = originalReceiverAccountNo;
}
public String getReceiverAccountNo() {
return receiverAccountNo;
}
public void setReceiverAccountNo(String receiverAccountNo) {
this.receiverAccountNo = receiverAccountNo;
}
}
我的要求是;
{
"receiverAccountNo":"566665"
}
我的测试控制器是;
@PostMapping("/test2")
public String test2(@RequestBody PojoTest pojoTest) {
return "OriginalReceiverAccountNo:"+pojoTest.getOriginalReceiverAccountNo()+" ReceiverAccountNo:"+pojoTest.getReceiverAccountNo();
}
当我运行代码时,我得到以下响应;
OriginalReceiverAccountNo:566665 ReceiverAccountNo:null
我正在使用 jackson-annotation-2.9.0 依赖项。我该如何解决这个问题?
【问题讨论】:
-
尝试为 ReceiverAccountNo 的 get 和 setter 注释 JsonProperty。我相信它是空的,因为您没有告诉注释为您填写该属性。
-
我遇到了异常; 2019 年 2 月 11 日 23:44:32.858 警告 [http-nio-8081-exec-1] org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.logWarningIfNecessary 无法评估 Jackson 反序列化类型 [[simple type, class com. ykb.frd.fraudws.PojoTest]]:com.fasterxml.jackson.databind.JsonMappingException:属性“receiverAccountNo”的设置器定义冲突:com.ykb.frd.fraudws.PojoTest#setReceiverAccountNo(1 params) vs com.ykb.frd .fraudws.PojoTest#setOriginalReceiverAccountNo(1 参数)
-
在下面查看我的答案。我认为您不需要对 setter 函数进行注释。
-
我尝试了您的解决方案,但收到了同样的异常