JsonSlurper避免修剪字符串中的最后一个零

时间:2016-05-09 09:10:47

标签: groovy jsonslurper

我在groovy中使用JsonSlurper将json文本转换为地图。

def slurper = new JsonSlurper();
def parsedInput = slurper.parseText("{amount=10.00}");

结果是

[amount:10.0]

我需要结果而不修剪最后的零。像

[amount:10.00]

已经检查了各种解决方案,但是如果不修剪最后零,则不进行转换。我在这里错过了什么。

我找到的方法之一是输入:

{amount="10.00"}

2 个答案:

答案 0 :(得分:3)

在数字和数学方面,10.00 IS 10.0

它们的编号完全相同。

他们只有不同的字符串表示。

如果您需要以10.0的形式向用户显示10.00,那么这是转化的事情,因为您需要将其转换为带有2位小数的字符串

类似的东西:

def stringRepresentation = String.format("%.02f", 10.0)

但是对于任何计算,10.010.00都是一样的

编辑 - 再试一次......

对,所以当你有json:

{"amount"=10.00}

右边的值是一个浮点数。

为了保持额外零(通常由数字的每个合理表示删除),您需要将其转换为字符串。

为此,您可以使用上面的String.format(其他方法可用)。

您不能将其保留为额外零的浮点数。

数字在我能想到的每种语言中都不像那样......他们可能会从记忆的背后做COBOL,但那是偏离轨道

答案 1 :(得分:0)

问题(GROOVY-6922)已在Groovy 2.4.6版中修复。使用2.4.6时,应保留该数字的比例。