我有一个json字符串,其中包含一个长数字但采用科学计数法(例如1.559101974041E12而不是1559101974041)。因此,我无法使用?eval进行解析,因为此值必须用双引号引起来才能进行解析。
我想到了一种解决方案,例如使用正则表达式在双引号周围加上双引号并使它们得到评估。之后,使用一些免费的标记方法将值转换为long。但是此解决方案具有很高的风险,并且还可以更改其他值。
答案 0 :(得分:0)
我不确定模板的外观,但是如果您有包含字符串s
的变量"1.559101974041E12"
(引号不是字符串值本身的一部分),则可以像s?number
一样解析。 s?eval
不起作用,因为科学符号不是FreeMarker语法的一部分(但是?number
可以解析更多格式)。
如果您要重新打印模板中的号码,请注意,根据语言环境和配置设置,它可能看起来像1,559,101,974,041
。您可以使用?c
(例如,${s?number?c}
)来防止这种情况,在这种情况下,它将始终看起来像1559101974041
。