在json字符串中以科学计数法处理长数字-Freemarker

时间:2019-07-04 10:16:37

标签: json freemarker

我有一个json字符串,其中包含一个长数字但采用科学计数法(例如1.559101974041E12而不是1559101974041)。因此,我无法使用?eval进行解析,因为此值必须用双引号引起来才能进行解析。

我想到了一种解决方案,例如使用正则表达式在双引号周围加上双引号并使它们得到评估。之后,使用一些免费的标记方法将值转换为long。但是此解决方案具有很高的风险,并且还可以更改其他值。

1 个答案:

答案 0 :(得分:0)

我不确定模板的外观,但是如果您有包含字符串s的变量"1.559101974041E12"(引号不是字符串值本身的一部分),则可以像s?number一样解析。 s?eval不起作用,因为科学符号不是FreeMarker语法的一部分(但是?number可以解析更多格式)。

如果您要重新打印模板中的号码,请注意,根据语言环境和配置设置,它可能看起来像1,559,101,974,041。您可以使用?c(例如,${s?number?c})来防止这种情况,在这种情况下,它将始终看起来像1559101974041