[英]json_encode with double quotes passed into JSON.parse
我已經看到,多年來這個問題被問了太多遍了。 仍然不能不問這段時間是否有任何改進。
目前,我有PHP代碼:
$jsonData = json_encode($data, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_AMP | JSON_HEX_QUOT);
然后JS(具體來說就是Angular)開始發揮作用:
var decoded = angular.fromJson('<?php echo $jsonData ; ?>');
上面的標志在阻止某些問題方面做得很好。 但是,給出示例:
$data = ["name" => "Name \"Nickname\" Surname"];
JSON無法解析。 如果我使用addslashes()
包裝數據, 則它確實可以工作 ,但是:
$data = ["name" => "Name 'Nickname' Surname"];
這失敗了。
由於結構$data
高度不可預測,通常深度為4-5層,因此我的解決方案是:
array_walk_recursive($data, function(&$item, $key){
$item = str_replace('"', '\"', $item);
});
這可行 ,但是,我正在尋找一些知識淵博的資源。 我讀過一些其他的SO問題,人們不僅會避免使用雙引號,而且還會換行,回車和反斜杠。
我需要做的最后一件事是陷入邊緣案例陷阱:)
對我有什么提示嗎?
由於json可以直接用作javascript中的對象文字,因此您可以像這樣使用它:
var decoded = <?php echo $jsonData ; ?>;
因此,無需進行任何進一步的分析,以避免文本中'
或\\
字符出現問題。 該json_encode
應該已經采取的照顧"
charaters。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.