2010-06-18 89 views
10

我有這樣的:JSON.parse字符串引號

JSON.parse('{"130.00000001":{"p_cod":"130.00000001","value":"130.00000001 HDD Upgrade to 2x 250GB HDD 2.5\" SATA2 7200rpm"}}'); 

JSONLint說,這是完全有效的JSON。但執行時,我有一個JSON.parse錯誤。

但是,如果我改變我的代碼:

JSON.parse('{"130.00000001":{"p_cod":"130.00000001","value":"130.00000001 HDD Upgrade to 2x 250GB HDD 2.5\\" SATA2 7200rpm"}}'); 

(注意雙反斜線)

它的工作原理,但現在JSONLint說invalid json

有人可以幫助理解這種行爲嗎?

+2

對我來說這似乎很簡單。 Jsonlint壞了;) – Wolph 2010-06-18 02:38:59

+0

輸入字符串從哪裏來?它是由JSON編碼器生成的嗎? – paullb 2010-06-18 02:41:03

+0

@paullb否它來自PHP $ _POST變量。 – mjsilva 2010-06-18 02:46:00

回答

15

這是線路格式與您在代碼中寫入以獲取線路格式的內容之間的區別。當你在代碼中聲明這個時,你需要在你的文字中使用double \,這樣字符串就會得到一個反斜槓(否則它會將\解釋爲一個轉義序列,用於聲明一個「並將其放入你的字符串中)。如果你打印出文字的值,你會看到一個反斜槓。

+0

TKS Dean,我想我得先逃脫javascript然後JSON。 因此,假設這是來自PHP我怎麼可以「雙」逃脫它:我試過這個:str_replace('\'','\\「',$ json),但它不工作。 – mjsilva 2010-06-18 02:54:48

+9

明白了:str_replace('\\「','\\\\'',$ json) 今天我知道還有一個逃跑的地獄:) – mjsilva 2010-06-18 02:58:08

相關問題