JSON没有在服务器上的引号中包含零

时间:2014-08-04 17:55:41

标签: json coldfusion coldfusion-9

我一直在解决这个问题。在我的本地计算机上,值“00”(双零)包含在引号内,但在服务器上它不包围它周围的双引号。

Ajax Call:

var loadFriends = $.ajax({
   type: "GET",
   url: "/webFolder/friends/list",
   dataType: "json", 
   data: {vID: 15},
   cache: false,
   success: function(returnData){
     var d = cfQueryNormalize(returnData);
     // console.log(d);
     // return;
     if (!jQuery.isEmptyObject(d)) {   
       do something...
     }else{
        do something...
     }
   },
   error: function (jqXHR, textStatus, errorThrown) {
     console.log(textStatus);
     console.log(errorThrown);
   }
  });


// script from Raymond Camden @ http://www.raymondcamden.com/2012/5/11/Using-CFC-data-with-Handlebars
function cfQueryNormalize(d) {
  var result = [];
  for(var i=0, len=d.DATA.length; i<len;i++) {
    var item = {};
    for(var k=0,innerlen=d.COLUMNS.length; k<innerlen; k++ ) {
      item[d.COLUMNS[k].toLowerCase()] = d.DATA[i][k];
    }
    result.push(item);
  }
  return result;
}

列是问题是第二个对象中的fid,其id为60。

本地计算机返回此信息:

[Object { id="59", fid="5D", vid="15", more...}, Object { id="60", fid="00", vid="15", Object { id="61", fid="00", vid="07", more...}, more...}]

服务器返回:

[Object { id="59", fid="2K", vid="15", more...}, Object { id="60", fid=00, vid="15", Object { id="61", fid="04", vid="15", more...}, more...}]

Firebug中的错误消息: enter image description here

我的本​​地计算机正在运行Windows 7,ACF CF 9,0,1,274733和IIS7。服务器正在运行Windows 2008 R2,ACF 9,0,2,282541和IIS7。我看到的唯一值得注意的差异是ColdFusion版本。非常感谢任何建议,谢谢。

1 个答案:

答案 0 :(得分:2)

ColdFusion充斥着JSON错误。在9.0.2中修复了一些内容并不令我感到意外。也就是说,这看起来像你的错误:“SerializeJSON casts multiple zero value as number instead of string”。但根据bugbase的说法,这个bug在CF10.0.10之前没有修复。所以看起来奇怪的是它在CF9的两个不同的次要版本上表现不同?!

我努力在ColdFusion 9上使用serializeJson()(请参阅我的博客标签“JSON”,了解它给我带来了多少冲突)。最后,我们认为CF的JSON支持不适用于CF9,并且已停止将其用于除最表面用途之外的任何其他用途。

我的建议是做同样的事情:简单地投降。

我对Google的GSON库有好运,如果这是一个选项。如果绝对不会序列化ColdFusion查询对象。