杰克逊反序列化时使用二传手

时间:2018-10-23 06:41:55

标签: java jackson

我尝试在Java中使用杰克逊反序列化json时使用我的自定义setter函数。我的目标是验证字段,例如,如果字段长度大于5,则裁剪最后2个字符等。或者,如果期望字段为整数的字符串带有字符串,请尝试进行转换等。

这是我的逻辑。

public class Channel {
    private String depositWithdrawalFlag;
    private String paymentOrderFlag;
    .
    .
    //MORE FIELDS

    @JsonCreator
    public Channel(@JsonProperty(value = "depositWithdrawalFlag", required = true) String depositWithdrawalFlag,
                   @JsonProperty("paymentOrderFlag") String paymentOrderFlag,
                   .
                   .
                   //MORE PROPERTIES


    {
        this.depositWithdrawalFlag = depositWithdrawalFlag;
        this.paymentOrderFlag = paymentOrderFlag;
        .
        .
        //MORE INITIALIZATIONS
    }

示例设置器

@JsonSetter()
public void setDepositWithdrawalFlag(String depositWithdrawalFlag) {
    System.out.println("Deneme");
    switch (depositWithdrawalFlag.toUpperCase()) {
        case "D":
        case "Q":
            this.depositWithdrawalFlag = depositWithdrawalFlag;
            break;
        default:
            this.depositWithdrawalFlag = "D";
            break;
    }
}

如果我尝试删除构造函数并将JsonProperty添加到私有字段的顶部,则必需的逻辑将不起作用,但这次的setter将起作用。

我该如何处理这种情况?谢谢

0 个答案:

没有答案