我在服务器端传递有效的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
}
答案 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
:
- 让 JText 成为ToString( text )
醇>
因此,将Array
Object
传递给它将使用.toString()
来生成:
"[object Object],[object Object]"
由于前导Array
,它会开始尝试将其解析为另一个[
,但由于JSON不支持身份,因此会发现object
无效。
答案 1 :(得分:1)
您使用的是哪个版本的jQuery?来自$.parseJSON
documentation:
在jQuery 1.9之前,$ .parseJSON返回null而不是抛出一个 如果传递空字符串,null或未定义,则会出错 虽然那些是无效的JSON。