簡體   English   中英

如何使用PHP json_encode輸出JSON解析兼容的json? JSON.parse-由於單轉義的雙引號引起了意外的令牌h

[英]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.parse中,這與

Uncaught SyntaxError: Unexpected token h
    at Object.parse (native)

,除非我像這樣雙重轉義反斜線

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

如何獲取PHP以創建與JSON解析兼容的輸出?

同時,我確實將其與基於該PHP的json_encode的 php中的字符串加倍json_encoding一起使用時, 無法避免像這樣的所有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; ?>;

做完了!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM