猿问

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 依赖项。我该如何解决这个问题?


千巷猫影
浏览 77回答 2
2回答

BIG阳

您可以使用这样的构造函数映射,它设置两个属性给定一个@JsonPropertypublic class Pojo{    private final String receiverAccountNo;    private final String originalReceiverAccountNo;    @JsonCreator    public Observation(            @JsonProperty("receiverAccountNo") String value)    {        this.receiverAccountNo = value;        this.originalReceiverAccountNo = value;    }我更喜欢这种方法来创建不可变对象,但如果你愿意,你可以让它保持可变

慕婉清6462132

这是不可能的。一个 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 中的两个字段将具有相同的值。
随时随地看视频慕课网APP

相关分类

Java
我要回答