[英]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.