2011-11-19 96 views
0

有人可以請求解釋一下爲什麼包含帶雙引號的字符串的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

請張貼更是打破瞭解析器的JSON的例子。 –

+0

我們需要更多信息才能給出有意義的答案。這裏沒有人能夠介意閱讀。不過,您可能想查看JSON規範(http://www.json.org/); JSON本身相當簡單。 – tdammers

+0

你能舉個例子嗎? – Shaun

回答

9

最後還有一個額外的}

}}] 

您應該通過http://jsonlint.com/

Parse error on line 6: 
...""" }}] 
---------------------^ 
Expecting ',', ']' 
+0

)好的,謝謝,有幫助。奇怪,因爲應該有一個{在開始...但至少告訴我我的php導致問題 – Tomas

+2

@Tomas,今後嘗試使用[JSONLint](http://jsonlint.com/)來驗證您的JSON。 –

+0

@Tomas:如果你說最初應該有一個雙「'」,那也是無效的。 – RightSaidFred

0

$ .parseJSON正在用雙引號查找對象的名稱,val單引號中的那個對象。這是你問的嗎?

5

這不是""但extraenous }運行麻煩JSON標記有:

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

因爲JSON specification特別指出string元素定義爲:

string 
    "" 
    " chars " 

換句話說,字符串值必須用雙引號括起來才能成爲有效的JSON。

編輯補充:

上面我的回答是原題正確,因爲它是前貼了幾秒鐘,這基本上是「在不使用雙引號,爲什麼jQuery.parseJSON失敗」 ,但是OP然後修改了這個問題,以包含一個能夠證明他/她的實際問題的例子,這個例子根本與報價無關。

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=""""}]