Как JsonFormat длинное значение с запятыми

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

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

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

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

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

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

Спасибо!


person tjholmes66    schedule 04.04.2019    source источник


Ответы (1)


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

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

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

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

person mle    schedule 04.04.2019
comment
Ага. Этот ответ привел к моему исправлению. Точно так, как вы описали! - person tjholmes66; 17.04.2019