Я пытаюсь использовать мою собственную функцию setter при десериализации json с использованием jackson в Java.Моя цель - проверить поля, например, если длина поля больше 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
поверх приватных полей, необходимая логика не работает, но установщики работают на этот раз.
Как я могу справиться с этой ситуацией?Спасибо