Coldfusion SerializeJSON和deSerializeJSON正在将字符串转换为数字
当通过SerializeJSON和deSerializeJSON传递给JS时,ColdFusion将字符串转换为数字 只有在两组数字之间使用“E”时才会发生这种情况。如3E6、65E3、56e45等。这是cfscript中的代码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 请建议,如果有任何其他方法解决此类问题。就
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