一尘不染

json解析错误,带双引号

json

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

//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将无法解析。我该如何处理这种情况?


阅读 299

收藏
2020-07-27

共1个答案

一尘不染

好吧,最后,JSON的解析使用相同的eval,因此,给它们smth时没有什么区别。语法错误。在这种情况下,您必须正确地在php中转义引号,然后使用json_encode将其及其转义斜线转义。

<?php
    $json = '{"result": ["lunch", "\"Show\""] }';
    echo json_encode($json);
?>

OUTPUT: "{\"result\": [\"lunch\", \"\\\"Show\\\"\"] }"

这应该适用于客户端JS(如果我没有输入错误)。

2020-07-27