为什么SerializeJSON返回带有.0的int?

为什么SerializeJSON返回带有.0的int?,json,coldfusion,Json,Coldfusion,以下代码: <cfscript> struct = StructNew(); struct.x = 1; struct.y = 2; </cfscript> <cfoutput>#SerializeJSON(struct)#</cfoutput> 所以我的问题是为什么要添加.0?有什么方法可以删除它吗?我认为这个实现不是最好的:-/试着检查一下:在数字中添加一个尾随的.0是一个已知的“特性”,就像serializeJson在第8版中实现的那样。

以下代码:

<cfscript>
struct = StructNew();
struct.x = 1;
struct.y = 2;
</cfscript>

<cfoutput>#SerializeJSON(struct)#</cfoutput>

所以我的问题是为什么要添加
.0
?有什么方法可以删除它吗?

我认为这个实现不是最好的:-/试着检查一下:

在数字中添加一个尾随的.0是一个已知的“特性”,就像serializeJson在第8版中实现的那样。在我的家用XP机器上,它在CF 9.01中被修复/更改,您的代码返回

{"Y":"2","X":"1"}
有两种方法可以删除它:

NumberFormat(x, "9")

我发现删除.0最好的方法是使用Coldfusion函数javaCast进行强制转换:

struct.x = javaCast("int",1);

已经有几个问题在讨论这个了。此或此/建议的解决方案很少,请选择您更喜欢的解决方案。CF9正在将数字转换为字符串?!?这两种方法都不是我想要的。啊,它们都可以在序列化之后处理JSON结构中的值,但如果您将它们应用于原始结构中的数字,则不会。我想这是您真正想要的,因为您可能正在将JSON传递给javascript或其他无法访问这些CFML方法的对象。
struct.x = javaCast("int",1);