Джексон использует сеттер при десериализации - PullRequest
0 голосов
/ 23 октября 2018

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

Как я могу справиться с этой ситуацией?Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...