【问题标题】:jQuery.parseJSON returns nulljQuery.parseJSON 返回 null
【发布时间】:2013-09-08 00:53:03
【问题描述】:

我在服务器端(使用 node.js)传递了有效的 JSON,但无法在客户端(使用 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
}

【问题讨论】:

  • 您能检查一下收到的data 是什么吗?
  • @FabrícioMatté 感谢您编辑我的问题。警报(数据)返回对象。
  • 好吧,JSON.parse 需要一个字符串,所以问题就来了。如果您使用的是 Chrome(或带有 Firebug 的 Firefox),请使用 console.log(data) 而不是 alert,然后按 F12 检查对象属性。您的 JSON 字符串位于 data 对象的属性内,或者 data 已经是已解析的对象。
  • 没错!我尝试了@JonathanLonowski 建议的技术。在下面的线程中查看我的回复。有什么想法吗?
  • 问题解决了! socket.io 发出一个键值对(不是键值对数组)。我改变了我的暗示,它现在可以工作了!谢谢。

标签: jquery json node.js


【解决方案1】:

[...] 现在我收到一条新的错误消息“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)

因此,将Objects 中的Array 传递给它将使用.toString() 产生:

"[object Object],[object Object]"

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

【讨论】:

  • 感谢您的解释。非常感激。建议应用更改,但仍有问题。以下是更多信息。警报(数据类型); // 返回对象警报 (data.length); // 返回未定义 // 现在硬编码 l=2 for (var i = 0, l = 2; i
【解决方案2】:

您使用的是什么版本的 jQuery?来自$.parseJSONdocumentation

在 jQuery 1.9 之前,$.parseJSON 返回 null 而不是抛出 如果传递的是空字符串、null 或未定义,则错误,甚至 虽然这些不是有效的 JSON。

【讨论】:

  • 我使用的是 1.7.1 。我刚刚更改为 1.9.1,现在我收到一条新的错误消息“Uncaught SyntaxError: Unexpected token o”
  • 我感觉socket不是一个有效的jQuery对象。
  • socket 库包含在 node.js 中。
  • 啊,好吧。我不使用node.js
  • @JonathanLonowski 如何获取键值对?
猜你喜欢
  • 2012-03-02
  • 1970-01-01
  • 2020-06-28
  • 1970-01-01
  • 1970-01-01
  • 2011-10-23
  • 1970-01-01
  • 2019-08-21
  • 2020-06-19
相关资源
最近更新 更多