JSON似乎不喜欢' 4D'

时间:2016-08-08 16:26:37

标签: json coldfusion

我使用serializeJSON和deserializeJSON函数在Coldfusion中遇到了一个奇怪的问题。当我执行以下操作时:

<cfdump var="#deserializeJSON(serializeJSON('4D '))#">

并加载页面,我收到一条错误,上面写着“JSON解析失败”字符2:&#39; D&#39;在4D&#39;。当我更改D时,输入看起来像&#39; 4E&#39;页面加载正常,但当我更改数字,以便输入读取类似&#39; 5D&#39;我犯了同样的错误。我想我可能会不小心进入一个逃脱角色,但我不太了解角色编码,而是充满自信地说出来。有没有人知道为什么会发生这种情况?

1 个答案:

答案 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和空格的特定组合使其跳跃。