即使已转义,双引号也会引发解析错误。 看下面的代码
//parse the json in javascript var testJson = '{"result": ["lunch", "\"Show\""] }'; var tags = JSON.parse(testJson); alert (tags.result[1]);
由于双引号(已被转义),因此将引发解析错误。 甚至eval()在这里都不行。 但是,如果我用这样的双斜杠将其转义:
eval()
var result = '{"result": ["lunch", "\\"Show\\""] }'; var tags = JSON.parse(result); alert (tags.result[1]);
然后就可以了 为什么我们需要在javascript中使用双斜杠?问题是,PHP json_encode()函数转义一个单斜杠双引号(是这样的:\"show\"),这JSON.parse将无法解析。我该如何处理这种情况?
json_encode()
\"show\"
JSON.parse
好吧,最后,JSON的解析使用相同的eval,因此,给它们smth时没有什么区别。语法错误。在这种情况下,您必须正确地在php中转义引号,然后使用json_encode将其及其转义斜线转义。
<?php $json = '{"result": ["lunch", "\"Show\""] }'; echo json_encode($json); ?> OUTPUT: "{\"result\": [\"lunch\", \"\\\"Show\\\"\"] }"
这应该适用于客户端JS(如果我没有输入错误)。