jQuery.parseJSON返回null

时间:2013-09-08 00:53:03

标签: jquery json node.js

我在服务器端传递有效的JSON(使用node.js),但无法在客户端解析(使用jQuery)。 jQuery.parseJSON返回null。任何帮助将不胜感激。

服务器端 -

var message = [{key:"1", count:1},{key:"2", count:2}];
client.publish('update', JSON.stringify(message));

客户端 -

socket.on("update", function(data) {
    var obj = jQuery.parseJSON(data);
    alert (obj); // returns null
    // do something
}

2 个答案:

答案 0 :(得分:2)

  

[...]现在我收到一条新的错误消息“Uncaught SyntaxError:Unexpected token o”

该错误通常意味着data已经是从JSON解析的Array。您可以验证with typeof

console.log(typeof data);
// if `string`, then it has yet to be parsed
// if `object`, then it's already been parsed

因此,您可能不需要使用$.parseJSON()JSON.parse(),也可以迭代data

for (var i = 0, l = data.length; i < l; i++) {
    console.log('Key = %s, Count = %s', data[i].key, data[i].count);
}

而且,错误来自JSON.parse() expecting a String

  
      
  1. JText 成为ToString( text
  2.   

因此,将Array Object传递给它将使用.toString()来生成:

"[object Object],[object Object]"

由于前导Array,它会开始尝试将其解析为另一个[,但由于JSON不支持身份,因此会发现object无效。

答案 1 :(得分:1)

您使用的是哪个版本的jQuery?来自$.parseJSON documentation

  

在jQuery 1.9之前,$ .parseJSON返回null而不是抛出一个   如果传递空字符串,null或未定义,则会出错   虽然那些是无效的JSON。