php - 带有双引号的json解析错误

标签 php javascript json parsing double-quotes

双引号即使转义也会引发解析错误。
看下面的代码

//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/

相关文章:

php - CodeIgniter:允许的内存耗尽

php - 当 WooCommerce 中提供免费送货时,仅禁用特定的固定费率送货方式

javascript - 如何导出 Codepen 以在网站的 HTML 中使用

JavaScript 创建 svg 过滤器

javascript - Bootstrap : Popover dismiss not working in iOS browser

php - JsonArray 返回空值

javascript 复选框默认返回第一个值而不是所选值

javascript - 您可以使用 jquery 或 javaScript 读取此 JSON

java - 将密码查询结果 (JSON) 解析为 Java 对象

angularjs - 如何在 AngularJS 中显示无限符号