console.log(JSON.parse('{"data":"{\"json\":\"rocks\"}"}'));
給出錯誤(Firefox和Chrome的控制檯上進行測試)。這是JSON.parse的錯誤嗎?使用PHP進行測試時,解碼效果相當好。Javascript的JSON.parse錯誤?
print_r(json_decode('{"data":"{\"json\":\"rocks\"}"}', true));
console.log(JSON.parse('{"data":"{\"json\":\"rocks\"}"}'));
給出錯誤(Firefox和Chrome的控制檯上進行測試)。這是JSON.parse的錯誤嗎?使用PHP進行測試時,解碼效果相當好。Javascript的JSON.parse錯誤?
print_r(json_decode('{"data":"{\"json\":\"rocks\"}"}', true));
此字符串在PHP和JS不同的處理,即你會得到不同的結果。
唯一逃脫在PHP單引號串序列\\
和\'
。所有的人都從字面上輸出,根據documentation:
要指定一個單引號,用反斜槓(
\
)逃脫它。要指定文字反斜槓,請將其加倍(\\
)。反斜槓的所有其他實例將被視爲一個反斜槓:這意味着你可以使用其他轉義序列,如\r
或\n
,將輸出字面上指定的,而不是任何特殊含義。
在JS,另一方面,如果字符串包含一個無效的轉義序列,the backslash is discarded(CV
意味着字符值):
- CharacterEscapeSequence的CV :: NonEscapeCharacter是CV的NonEscape字符。
- NonEscapeCharacter :: SourceCharacter的CV但不EscapeCharacter或LineTerminator是SourceCharacter字符本身。
的報價可能不是由自身有益的,但如果你遵循鏈接,看看語法,應該清楚。
所以在PHP中的字符串字面包含\"
而JS只會包含"
,這使得無效的JSON:
{"data":"{"json":"rocks"}"}
如果你想創建一個JS反斜槓,你必須逃避它:
'{"data":"{\\"json\\":\\"rocks\\"}"}'
要在字符串文字中使用文字反斜線,您需要\\
。
console.log(JSON.parse('{"data":"{\\"json\\":\\"rocks\\"}"}'));
這將成功地逃脫了JSON處理內部引號。
你需要躲避反斜線:
console.log(JSON.parse('{"data":"{\\"json\\":\\"rocks\\"}"}'));
你真的不需要在單引號裏面加雙引號,並且你有兩個e在內部對象周圍輸入xtra引號,只需
console.log(JSON.parse('{"data":{"json":"rocks"}}'));
就夠了。
是的,我知道這是正確的方法。引號是故意的。 – kehers
單對象 '\'不會通過JSON.parser
MyObj中= {\ 「JSON \」:\ 「岩石\」}解析
MyObj中= {\\「JSON \\ 「:\\」 石頭\\「}
休耕線工作對我來說
刪除反斜槓
while(typeof myobj == 'string'){
myobj = JSON.parse(myobj)
}
注意:我試圖解釋問題是什麼,但看看Oleg的答案是如何構建數據。 –
是的。但引述是故意的。你回答了。 – kehers