在json_encode()中的斜杠后删除双引号

时间:2017-09-06 09:12:23

标签: php json cakephp-3.0

我从数据库获取信息并创建一个json供用户下载。但是json下载了问题 我在CakePHP中的代码

        $response = json_encode($result,JSON_UNESCAPED_SLASHES);
        header('Content-Type: application/json');
        $this->viewBuilder()->className('Json');
        $this->response->download('export-' . date('YmdHis') . '.' . "json");
        $this->set('_jsonOptions', JSON_PRETTY_PRINT);
        $this->set(compact('response'));
        $this->set('_serialize', "response");

预期:

  

{"版本":" 1.0""名称":"测试""值&#34 ;: " ABC123"}

结果

  

{\"版本\":\" 1.0 \" \"名称\":\"测试\&#34 ; \"值\":\" ABC123 \"}

2 个答案:

答案 0 :(得分:0)

使用JSON_FORCE_OBJECT参数

尝试此操作
<?php
    $fruits = array('apple', 'orange', 'banana', 'strawberry'); // fruits table
    echo json_encode($fruits, JSON_FORCE_OBJECT);
    // {"0":"apple","1":"orange","2":"banana","3":"strawberry"} 
?>

答案 1 :(得分:0)

对于使用CakePHP 2.x的任何人,我都遇到了这个问题。这就是我解决的方法。

function blah1()
{
    $data = ['path' => '/i/have/no/escaped/slashes'];
    $this->set('_jsonOptions', JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
    $this->set([ '_serialize' => 'data', 'data' => $data]) ;
}

输出:

{
    "path":"/i/have/no/escaped/slashes"
}

转义的斜杠

function blah2()
{
    $data = ['path' => '/i/have/escaped/slashes'];
    $this->set([ '_serialize' => 'data', 'data' => $data]) ;
}

输出:

{"path":"\/i\/have\/escaped\/slashes"}