Как JsonFormat длинное значение с запятыми - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть интерфейс, который я создал, который допускает числовое значение. Конечно, значение, которое пользователь должен ввести, должно быть строго числовым. Это не десятичное число, ни запятые, ни $, ни другие значения, и я могу контролировать это в пользовательском интерфейсе, если мне нужно.

Тем не менее, в случае, если пользователь вводит свободный текст в это числовое поле, я ищу простой способ преобразования 123,456 в 123456.

Я использую Spring 5, Spring MVC, и REST Controller работает нормально, если я передаю ему '123456', однако, поскольку POJO имеет длинное значение, мне интересно, могу ли я с Jackson FasterXML использовать @JsonFormat аннотацию, чтобы взять 123 456 и преобразовать это в 123456 ????

Допустим, кто-то вводит в качестве значения значение 123 456 789,00, и мы знаем, что его можно преобразовать в long, поэтому мне интересно, можно ли использовать аннотацию @JSonFormat в этом поле, чтобы преобразовать его в 123456789 ???

Есть ли что-то, что я мог бы сделать в установщике POJO, чтобы сделать эту работу?

Полагаю, я мог бы просто изменить свой POJO, чтобы он принимал строковое значение, а затем удалить все запятые, все десятичные дроби, удалить $, удалить любые другие нечисловые значения, и тогда это будет всеохватывающим.

Спасибо!

1 Ответ

1 голос
/ 04 апреля 2019

Боюсь вам сказать, но нет способа достичь этого с помощью @JsonFormat.

Два первых подхода описаны в первых двух ответах на вопрос Как десериализоватьзначение с плавающей запятой с локализованным десятичным разделителем с Джексоном , как они:

  • Реализация пользовательского десериализатора JSON с логикой, которую вы описали своими словами: […] И затем удалите все запятые […]

  • Используя локализованный DefaultDeserializationContext, который анализирует число, включенное в ваши строки, в зависимости от заданного Locale

...