我从数据库获取信息并创建一个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 \"}
答案 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"}