java - java pojo中相同的json字段设置为不同的属性
问题描述
我想在 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 依赖项。我该如何解决这个问题?
解决方案
您可以使用这样的构造函数映射,它设置两个属性给定一个@JsonProperty
public class Pojo
{
private final String receiverAccountNo;
private final String originalReceiverAccountNo;
@JsonCreator
public Observation(
@JsonProperty("receiverAccountNo") String value)
{
this.receiverAccountNo = value;
this.originalReceiverAccountNo = value;
}
我更喜欢这种方法来创建不可变对象,但如果你愿意,你可以让它保持可变
推荐阅读
- c - vxWorks 计时器:无法多次调用处理程序
- c - C - Marshaling/Unmarshaling Struct with htonl and ntohl
- microservices - 如何将 RDBMS 单体数据库转换为基于微服务架构的数据库
- spring - 如何在安装了 Spring Tool Suite 4 的 Eclipse 2018-12 中获取 Spring Explorer 视图?
- c# - 应用程序的 SQL Server 连接超时问题
- c# - 如何从键包含子字符串的字典中获取(键,值)的集合?
- java - java 可选:不必做嵌套 ifPresent() 的好方法
- java - 对话框后按已禁用
- git - 如何正确使用 git 别名中的参数?
- excel-formula - 嵌套 IF 语句中的参数过多