如何输出JSON解析兼容JSON与PHP json_encode?JSON.parse -由于单转义双引号导致的意外令牌


How to output JSON parse compatible json with PHP json_encode? JSON.parse - Unexpected token h due to single escaped double quotes

我有这个php:

<?php
    $jsonarr = array("haha" => array("hihi'hih","hu'"huh"));
    print json_encode($jsonarr);

得到

{"haha":["hihi'hih","hu'"huh"]}

现在,在JSON中。用

解析这个断点
Uncaught SyntaxError: Unexpected token h
    at Object.parse (native)

,除非我像这样双转义反斜杠

var json = '{"haha":{"hihi''hih":"hu'''"huh"}}';
JSON.parse(json);

如何让php创建一个JSON解析兼容的输出?

同时,我确实得到了这个工作与双json_encoding的字符串在php基于这个php 's json_encode不转义所有JSON控制字符像这样,但想知道是否有一些其他的方法。

$jsonarr = array("haha" => array("hihi'hih","hu'"huh"));
        print json_encode(json_encode($jsonarr));

如果你从AJAX得到这个,它不会发生,所以我相信你是使用PHP生成JS代码,像这样:

var json = '<?php echo $jsonarr; ?>';
var obj = JSON.parse(json);

这不起作用,因为,正如您所注意到的,打印时$jsonarr将没有必要数量的反斜杠。JSON中的'"需要在JS字符串字面值中为''",以便被理解为'"

相反,请记住JSON是可执行的JS:
var obj = <?php echo $jsonarr; ?>;

完成了!