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

Aru*_*ati 1 coldfusion coldfusion-9

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

只有在两组数字之间使用"E"时才会发生这种情况.像3E6,65E3,56e45等.这是cfscript中的代码.

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

Output:
2.0E9 2000000000 
Run Code Online (Sandbox Code Playgroud)

请提出建议,如果有其他方法可以解决此类问题.

Ada*_*ron 8

它是这样的:https://bugbase.adobe.com/index.cfm?event = bug & id = 3695627:"SerializeJSON将看起来像科学记数法的字符串转换成浮点数."

这是CF9中的已知错误,它已在CF10中修复.

与此同时,你只需要用字符串填充字符串,迫使ColdFusion不要将其视为科学记数法中的数字.

或升级到CF10(下个月CF9终止,顺便说一下).或者到Railo.

  • 或者试试Ben的darn good序列化CFC.https://github.com/bennadel/JsonSerializer.cfc (2认同)