我尝试在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将起作用。
我该如何处理这种情况?谢谢