为了账号安全,请及时绑定邮箱和手机立即绑定

java pojo中相同的json字段设置为不同的属性

java pojo中相同的json字段设置为不同的属性

千巷猫影 2022-06-15 10:03:14
我想在 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 依赖项。我该如何解决这个问题?
查看完整描述

2 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

您可以使用这样的构造函数映射,它设置两个属性给定一个@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;

    }

我更喜欢这种方法来创建不可变对象,但如果你愿意,你可以让它保持可变


查看完整回答
反对 回复 2022-06-15
?
慕婉清6462132

TA贡献1804条经验 获得超2个赞

这是不可能的。一个 json 字段被映射到一个 pojo 属性。


但是,您可以更改 pojo 的行为,以便其中一个的 setter 也设置另一个的值:


@JsonProperty("receiverAccountNo")

public void setOriginalReceiverAccountNo(String originalReceiverAccountNo) {

    this.originalReceiverAccountNo = originalReceiverAccountNo;

    this.receiverAccountNo = originalReceiverAccountNo;

}



public void setReceiverAccountNo(String receiverAccountNo) {

    this.receiverAccountNo = receiverAccountNo;

    this.originalReceiverAccountNo = receiverAccountNo;

}

这样 pojo 中的两个字段将具有相同的值。


查看完整回答
反对 回复 2022-06-15
  • 2 回答
  • 0 关注
  • 76 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信