Coldfusion SerializeJSON和deSerializeJSON正在将字符串转换为数字

Coldfusion SerializeJSON和deSerializeJSON正在将字符串转换为数字,coldfusion,coldfusion-9,Coldfusion,Coldfusion 9,当通过SerializeJSON和deSerializeJSON传递给JS时,ColdFusion将字符串转换为数字 只有在两组数字之间使用“E”时才会发生这种情况。如3E6、65E3、56e45等。这是cfscript中的代码 x = "2e9"; writedump(SerializeJSON(x)); writedump(deSerializeJSON(SerializeJSON(x))); Output: 2.0E9 2000000000 请建议,如果有任何其他方法解决此类问题。就

当通过SerializeJSON和deSerializeJSON传递给JS时,ColdFusion将字符串转换为数字

只有在两组数字之间使用“E”时才会发生这种情况。如3E6、65E3、56e45等。这是cfscript中的代码

x = "2e9";
writedump(SerializeJSON(x));
writedump(deSerializeJSON(SerializeJSON(x)));

Output:
2.0E9 2000000000 
请建议,如果有任何其他方法解决此类问题。

就是这个::SerializeJSON将看起来像科学符号的字符串转换为浮点数

这是CF9中的一个已知错误,在CF10中已修复

同时,您只需在字符串中填充一些内容,以强制ColdFusion在科学记数法中将其视为数字

或者升级到CF10 CF9将在下个月结束,顺便说一句。或者升级到Railo。

就是这样::SerializeJSON将看起来像科学符号的字符串转换为浮点数

这是CF9中的一个已知错误,在CF10中已修复

同时,您只需在字符串中填充一些内容,以强制ColdFusion在科学记数法中将其视为数字


或者升级到CF10 CF9将在下个月结束,顺便说一句。或者升级到Railo。

我已经使用下面的解决方案解决了这个问题

假设ItemUnit=12E45

stcReturn.firstname = "Yes";
stcReturn.lastname = "Man";
stcReturn.ItemUnit = "12E45"
反序列化JSON stcReturn.ItemUnit=12e+46后输出错误

<cfset stcReturn.ItemUnit  = ItemUnit />    
<cfset StructSetMetaData(stcReturn.ItemUnit, {ItemUnit : 
{"type":"string","name":"ItemUnit"}})/>

deSerializeJSON(stcReturn)

正确输出:12E45

我已使用以下解决方案解决此问题

假设ItemUnit=12E45

stcReturn.firstname = "Yes";
stcReturn.lastname = "Man";
stcReturn.ItemUnit = "12E45"
反序列化JSON stcReturn.ItemUnit=12e+46后输出错误

<cfset stcReturn.ItemUnit  = ItemUnit />    
<cfset StructSetMetaData(stcReturn.ItemUnit, {ItemUnit : 
{"type":"string","name":"ItemUnit"}})/>

deSerializeJSON(stcReturn)


正确的输出:12E45

为什么要序列化包含字符串的变量?你只需要序列化数组或结构。这只是一个复制的例子,Simon:它会影响正在序列化的数据结构中任何地方的类似字符串。如果我像这样分开上面的代码,这很奇怪**x=2e9;y=jsonx;z=反序列化JSONY;writedumpz;**,我得到了2000000000的输出。有人能分享一些关于这方面的信息吗?@TusharBhaware:看看我的答案。2e9是2000000000的科学符号。@AdamCameron,谢谢你的回答。如果你不回答的话,我早就想知道这件事了。我想,是时候检查一下错误库了。为什么要序列化包含字符串的变量?你只需要序列化数组或结构。这只是一个复制的例子,Simon:它会影响正在序列化的数据结构中任何地方的类似字符串。如果我像这样分开上面的代码,这很奇怪**x=2e9;y=jsonx;z=反序列化JSONY;writedumpz;**,我得到了2000000000的输出。有人能分享一些关于这方面的信息吗?@TusharBhaware:看看我的答案。2e9是2000000000的科学符号。@AdamCameron,谢谢你的回答。如果你不回答的话,我早就想知道这件事了。我想,是时候让我去查一下基地了。谢谢亚当。这很有帮助。或者试试Ben的该死的好CFC。是的,雷蒙德,刚刚通过。希望这将有助于。。。谢谢你,ColdFusion 2016中没有固定。SerializeJson将1519402896转换为1.519402896E9。这很有帮助。或者试试Ben的该死的好CFC。是的,雷蒙德,刚刚通过。希望这将有助于。。。谢谢你,ColdFusion 2016中没有固定。序列化JSON将1519402896转换为1.519402896E9