我使用serializeJSON和deserializeJSON函数在Coldfusion中遇到了一个奇怪的问题。当我执行以下操作时:
<cfdump var="#deserializeJSON(serializeJSON('4D '))#">
并加载页面,我收到一条错误,上面写着“JSON解析失败”字符2:&#39; D&#39;在4D&#39;。当我更改D时,输入看起来像&#39; 4E&#39;页面加载正常,但当我更改数字,以便输入读取类似&#39; 5D&#39;我犯了同样的错误。我想我可能会不小心进入一个逃脱角色,但我不太了解角色编码,而是充满自信地说出来。有没有人知道为什么会发生这种情况?
答案 0 :(得分:5)
您似乎正在使用ColdFusion 9.x,因为此问题已在更高版本的ColdFusion中得到修复。
之前已经提出同样的问题,请参阅Coldfusion JSON serialization inconsistency
任何完全数字字符串,尾随D或F后跟 空格 [..反序列化时导致错误] 。
function removeID(delete_id) { tabledata = tabledata.filter(function(obj) { return delete_id.indexOf(obj.id)===-1; //added === -1 here }); } var tabledata = [{ id: 1, name: "Rick", upper: "0.67" }, { id: 2, name: 'david', upper: "0.46" }, { id: 3, name: 'ashley', upper: null }]; var ids = [1,2]; //defined it as an array (not sure if you did) removeID(ids); console.log(tabledata);
解析器修剪并检查最后一个字符是
JSON parsing failure at character 9:'D' in {"wtf":4D }
还是D
(double或 漂浮)并剥离它。如果剩余的字符是数字,则不 报价已添加。如果你没有尾随空格,它就可以了 完美。数字F
和空格的特定组合使其跳跃。