我创建了一个允许数字值的前端。当然,用户应输入的值应严格为数字值。那不是小数,没有逗号,没有$,没有其他值,如果需要,我可以在UI上控制它。
但是,如果用户确实在此数字框中输入了自由文本,我正在寻找一种简单的方法将123,456转换为仅123456。
我正在使用Spring 5,Spring MVC,并且如果我将其传递给'123456',则REST控制器可以正常工作,但是,因为POJO具有较长的值,所以我想知道我是否可以与Jackson FasterXML一起使用@JsonFormat注释取123,456并将其转换为123456 ????
比方说有人输入123,456,789.00作为值,我们知道可以将其转换为long,所以我想知道是否可以在此字段上使用@JSonFormat批注以使其转换为123456789 ???
在POJO的设置者中有什么我可以做的吗?
我想我也可以只更改POJO以接受一个String值,然后删除所有逗号,所有小数点,删除$,删除任何其他非数字值,然后将其作为全部。
谢谢!
答案 0 :(得分:1)
我怕告诉你,但是@JsonFormat
无法实现。
问题How to deserialize a float value with a localized decimal separator with Jackson的前两个答案描述了两种可能的方法,它们是:
使用您用单词描述的逻辑来实现自定义JSON deserializer:[...]然后删除所有逗号[...]
使用本地化的DefaultDeserializationContext
来解析字符串中包含的数字,具体取决于给定的Locale