Json 在Grails中,如何将前导零表示为十进制

Json 在Grails中,如何将前导零表示为十进制,json,grails,Json,Grails,上述代码的结果是421,而不是645。我知道这个数字被解释为八进制。是否需要指定忽略前导零并将其解释为十进制 我可以有一个预处理步骤,在传递给slurper之前删除前导零,但我想看看是否有更优雅的解决方案 我使用的是Grails1.3.7。在引用的数字中传递。您看到的是groovy将该值强制为字符串值的行为 要演示,请尝试 String number = "{'number':000645}" net.sf.json.groovy.JsonSlurper slurper = new net.sf

上述代码的结果是421,而不是645。我知道这个数字被解释为八进制。是否需要指定忽略前导零并将其解释为十进制

我可以有一个预处理步骤,在传递给slurper之前删除前导零,但我想看看是否有更优雅的解决方案


我使用的是Grails1.3.7。

在引用的数字中传递。您看到的是groovy将该值强制为字符串值的行为

要演示,请尝试

String number = "{'number':000645}"
net.sf.json.groovy.JsonSlurper slurper = new net.sf.json.groovy.JsonSlurper()
def resource = slurper.parseText(number)
System.out.println(resource.number)
vs


在groovy控制台中。(如果您想追踪发生了什么,您的slurper的来源在这里:)

我复制了问题中所述的这个问题。我倒过来看看是否有可能在处理JSON时从JSON中去掉前导零,但我找不到方法。也许Ezmorp可以提供一种去掉零的方法。如果我加上引号,那么它会像预期的那样工作。但由于这是一个数字,客户端发送它时没有引号,因此必须对其进行处理。我看不到立即改变groovy处理方式的方法。我怀疑整数到字符串的转换是通过整数构造函数实现的,但我手头没有Groovy源代码。因为您正在接受输入,所以您可能知道所有预期字段及其类型。正如您所说,您可以通过regex或其他方式进行预处理,也可以对JSON对象进行后处理。(好吧,FWIW,我收回我的假设,它是通过整数构造函数实现的。)技术上,JSON数字中“不允许前导零”,顺便说一句。请参阅和。感谢Brian在规范中的注释。我错过了这一部分。
String number = "000645"
String number = 000645