Я получаю информацию из базы данных и создаю 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», «название»: «Тест», «значение»: «абв123»}
Результат
{\ «Версия \»: \ «1,0 \», \ «Имя \»: \ «тест \», \ «значение \»: \ «абв123 \»}
попробуйте это с параметром 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"}
?>
Для тех, кто использует 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"}