使用加号序列化JSON导致JSON无效。

14

我正在通过IBM MQ调用处理数据,当返回值为0时,在ColdFusion 10 (10,0,11,285437)中序列化为+0.0,结果导致无效的JSON并且不能被反序列化。

stPolicy = { "prem": "+0.0" };
serializedData = serializeJSON(stPolicy);
writeDump(isJSON(serializedData));
writeDump(deserializeJSON(serializedData));

当尝试反序列化{"prem":+0.0}时,isJSON输出NO并出现错误。

我能够通过将所有的+0替换为0来解决这个问题,但我猜想这是ColdFusion中的一个bug。是否有其他人遇到过这个问题并实施了更好的修复方法?

已提交错误报告:Bug #3632972


https://bugbase.adobe.com/ 谢谢 - Henry
@Henry 提交了一个 bug,请前往 https://bugbase.adobe.com/index.cfm?event=bug&id=3632972 查看。 - Matt Busche
9
这些ColdFusion的JSON处理中的错误什么时候才能结束啊?我觉得他们需要从头开始彻底做好。不用说,我会支持这个想法的。顺便说一下,这在CF9和CF10中有问题,但在Railo上可以正常工作,甚至在OpenBD上也是如此。 - Adam Cameron
我想知道是否有人在Github或其他地方正在开发CFC?我们需要一个集中协作的地方来解决这个问题。 - James A Mohler
1
@JamesMohler Ben Nadel在这里启动了一个项目 https://github.com/bennadel/JsonSerializer.cfc - Matt Busche
这么昂贵的产品怎么会有这么多漏洞呢?认真点 Adobe。 - Mike Causer
1个回答

1
Adobe已将此错误列为已修复bug database,但尚未发布。这是我想出的解决方法。只需用0替换+0即可。
private string function serializeJSONFixCF10(required string serializedData) {
  return replace(arguments.serializedData,'+0','0','all');
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接