有人请求向我解释为什么包含带双引号的字符串的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":""""}}]
答案 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修改了问题以包括示例表明他/她的实际问题,与报价完全无关。