摆脱 JSON 中的双引号


Getting rid of double quotes in JSON

>我需要去掉 JSON 字符串中的双引号,这就是我形成数组然后将其转换为 JSON 的方式

$dinnerDetails = array();
foreach ($dinners as $dinner) {
    $dinnerDetails[] = array(
        "title" => $dinner->getName(),
        "data" => $dinner->getDate()
    );
}
$dinnerDetails = json_encode($dinnerDetails);

当我转储$dinnerDetails时,在我的视图中,我看到以下内容

string '[
    {
        "title": "Formal Dinner",
        "data": "Tue Apr 05 2016 05:00:00 GMT+0500 (PKT)"
    },
    {
        "title": "Formal Dinner",
        "data": "Tue Apr 05 2016 05:00:00 GMT+0500 (PKT)"
    },
    {
        "title": "Black Tie",
        "data": "Wed Apr 13 2016 05:00:00 GMT+0500 (PKT)"
    },
    {
        "title": "Formal Dinner",
        "data": "Fri Apr 08 2016 05:00:00 GMT+0500 (PKT)"
    }
]

当我将其分配给JS变量时,这就是在源代码中看到它的方式

var dinners = [
    {
        "title": "Formal Dinner",
        "data": "Tue Apr 05 2016 05:00:00 GMT+0500 (PKT)"
    },
    {
        "title": "Formal Dinner",
        "data": "Tue Apr 05 2016 05:00:00 GMT+0500 (PKT)"
    },
    {
        "title": "Black Tie",
        "data": "Wed Apr 13 2016 05:00:00 GMT+0500 (PKT)"
    },
    {
        "title": "Formal Dinner",
        "data": "Fri Apr 08 2016 05:00:00 GMT+0500 (PKT)"
    },
    {
        "title": "Formal Dinner",
        "data": "Sat Apr 16 2016 05:00:00 GMT+0500 (PKT)"
    },
    {
        "title": "Formal Dinner",
        "data": "Mon Mar 28 2016 05:00:00 GMT+0500 (PKT)"
    }
];

我正在使用Symfony框架,这就是我传递$dinnerDetails查看的方式

return $this->render('AppBundle:admin/college:edit.html.twig', array(
    'dinners' => $dinnerDetails
));

然后在树枝内部,我像这样分配给 js 变量

var dinner = jQuery.parseJSON(dinners);

在JS中,我什至尝试做JSON.parse(dinners.replace(""",'"'));但这无济于事。

我正在寻找的输出是这样的

[
                    {
                        title: "All Day Event",
                        date: "Fri Apr 08 2016 05:00:00 GMT+0500",
                    },
                    {
                        title: "Long Event",
                        date: "Fri Apr 08 2016 05:00:00 GMT+0500",
                    },
]

我将非常感谢这里的帮助。

尝试模板中的原始过滤器。像这样:

{{ dinners|raw }}

2nd. 您已将 PHP 对象序列化为 JSON 字符串。
如果将此字符串粘贴到脚本块中,则此字符串将被解释为 JS。
它现在是JS代码,不再是字符串。您不必解析它;实际上您无法解析它。

<script> var dinner = {{ dinners|raw }}; </script>

在你的控制器或php文件中使用以下代码。

<?php
$arrDinnerDetails = array();
foreach ($dinners as $dinner)
{
    $arrDinnerDetails[] = array(
        "title" => $dinner->getName(),
        "data"  => $dinner->getDate()
    );
}
return $this->render('AppBundle:admin/college:edit.html.twig', array(
            'arrDinnerDetails' => $arrDinnerDetails
        ));
?>

在视图文件中,使用以下代码。

<script>
    var strJsonDinner = JSON.stringify('<?php echo json_encode($arrDinnerDetails); ?>');
</script>