$ .parseJSON打破双引号

时间:2011-11-19 17:22:42

标签: javascript jquery json

有人请求向我解释为什么包含带双引号的字符串的json会中断$.parseJSON吗?

这有效:

[{"type":"message","content":{"user":"tomasa", "time":"1321722536", "text":"asdasdasd"}}]

这也有效:

[{"type":"message","content":{"user":"tomasa", "time":"1321723267", "text":"""}}]

但是这会导致$.jsonParse不返回任何内容(我假设这是一个格式错误的json字符串:

[{"user":"tomasa", "time":"1321723278", "text":""""}}]

5 个答案:

答案 0 :(得分:9)

最后你还有一个}

}}]

您应该通过http://jsonlint.com/

运行麻烦的JSON标记
Parse error on line 6:
..."""    }}]
---------------------^
Expecting ',', ']'

答案 1 :(得分:5)

不是"",而是您拥有的}

[{"user":"tomasa", "time":"1321723278", "text":""""}}]
                                                              ^

答案 2 :(得分:3)

由于双}而崩溃。

>>> $.parseJSON('[{"user":"tomasa", "time":"1321723278", "text":""""}}]')
SyntaxError: JSON.parse: expected ',' or ']' after array element
(function(a,b){function cy(a){return f...h]&&f.event.trigger(c,d,b.handle.elem 

但这有效:

>>> $.parseJSON('[{"user":"tomasa", "time":"1321723278", "text":""""}]')
[Object { user="tomasa", time="1321723278", text=""""}]

答案 3 :(得分:0)

$。parseJSON用双引号查找对象的名称,用单引号查找该对象的值。这是你要问的吗?

答案 4 :(得分:0)

因为JSON specification明确指出string元素定义为:

string
  ""
  " chars "

换句话说,字符串值必须用双引号括起来才能成为有效的JSON。

已编辑添加:

我上面的答案对于几秒钟前发布的原始问题是正确的,这基本上是“为什么当双引号未被使用时jQuery.parseJSON失败”,但随后OP修改了问题以包括示例表明他/她的实际问题,与报价完全无关。