Неправильный анализ отката Джексона для формата поля - PullRequest
0 голосов
/ 04 февраля 2019

У меня есть класс, в который десериализуется ответ сервера:

@JsonIgnoreProperties(ignoreUnknown = true)
@JsonInclude(JsonInclude.Include.NON_NULL)
public class Card {

double amount;

String cardType;
String cardNumber
... many more properties
}

API не очень согласован, поэтому для моего рассматриваемого запроса я получаю строку "$74.50", которая явно не в состоянии разбираться в два разакак есть.Я не могу изменить класс, так как он, вероятно, потерпит неудачу в другом месте, где он действительно двойной.

Можно ли сделать условие, чтобы Джексон воспринял строку буквально, не изменяя класс?Я думаю, что могу сделать это с помощью специального десериализатора на ObjectMapper, например, здесь , но не знаю, как его точно выполнить.

1 Ответ

0 голосов
/ 04 февраля 2019

Создайте дополнительный установщик для amount:

@JsonSetter("amount")
public void setAmount(String sAmount) {
    // parse "$74.50" to 74.50 here
    this.amount = parsedAmount;
}

Он будет вызван для поля типа {"amount": "$74.50"} и правильного набора amount в вашем классе.

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