0

我在服务器端传递有效的 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
}
4

2 回答 2

2

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

该错误通常意味着data已经Array从 JSON 解析。您可以通过以下方式typeof验证这一点:

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

因此,您可能不需要使用$.parseJSON()orJSON.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()预期String

  1. JText为 ToString( text )

因此,将一个Arrayof Objects 传递给它将.toString()用于产生:

"[object Object],[object Object]"

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

于 2013-09-08T01:44:20.613 回答
1

您使用的是什么版本的 jQuery?从$.parseJSON 文档中:

在 jQuery 1.9 之前,如果 $.parseJSON 传递一个空字符串、null 或 undefined,则返回 null 而不是抛出错误,即使这些不是有效的 JSON。

于 2013-09-08T00:56:02.067 回答