双引号即使转义也会引发解析错误。
看下面的代码
//parse the json in javascript
var testJson = '{"result": ["lunch", "\"Show\""] }';
var tags = JSON.parse(testJson);
alert (tags.result[1]);
由于双引号(已经转义),这会引发解析错误。
甚至 eval()
在这里也行不通。
但如果我用这样的双斜杠转义它:
var result = '{"result": ["lunch", "\\"Show\\""] }';
var tags = JSON.parse(result);
alert (tags.result[1]);
然后它就可以正常工作了。
为什么我们需要在 javascript 中使用双斜杠?
问题是 PHP json_encode()
函数使用单斜杠转义双引号(例如:\"show\"
),其中 JSON.parse
将无法解析。这种情况该如何处理?
最佳答案
Javascript 将其字符串转义,而 json 也将它们转义。
json 解析器将第一个字符串 ( '{"result": ["lunch", "\"Show\""] }'
视为
{"result": ["lunch", ""Show""] }
,因为 \"
在 javascript 中的意思是 "
,但不是t 退出双引号字符串。
第二个字符串 '{"result": ["lunch", "\\\"Show\\\""] }'
首先被转义为 {"result": ["lunch", "\"Show\""] }
(并且正确地被 json 转义)。
我认为,'{"result": ["lunch", "\\"Show\\""] }'
也应该可以工作。
关于php - 带有双引号的json解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/949604/