gpt4 book ai didi

javascript - 带有双引号的 json_encode 传递到 JSON.parse

转载 作者:行者123 更新时间:2023-11-29 19:19:00 25 4
gpt4 key购买 nike

我看到这个问题多年来被问了太多次。还是忍不住要问这段时间有没有什么改进。

目前,我有 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 应该已经处理了 " 字符。

关于javascript - 带有双引号的 json_encode 传递到 JSON.parse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33927573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com