在写一个API接口的时候,使用 json 数据返给前端使用..PHP使用时json_encode
函数
<?php $arr = [ '汉字' => '这是一段汉字', 'en' => 'this is en', '1' => 12345689, 'arr' => [ 'key' => 'value', ], ]; echo json_encode($arr);
输出之后是这样的.
这种并不是标准的 JSON,因为你没告诉浏览器这是 JSON 数据,浏览器默认以 html 输出了.那么我们加上.
<?php // 告诉浏览器我是 JSON header('content-type:application/json;charset=utf-8'); $arr = [ '汉字' => '这是一段汉字', 'en' => 'this is en', '1' => 12345689, 'arr' => [ 'key' => 'value', ], ]; echo json_encode($arr);
中文汉字会被编码.也不是很好看.
在这里我们使用:JSON_UNESCAPED_UNICODE
和JSON_PRETTY_PRINT
如:
<?php // 告诉浏览器我是 JSON header('content-type:application/json;charset=utf-8'); $arr = [ '汉字' => '这是一段汉字', 'en' => 'this is en', '1' => 12345689, 'arr' => [ 'key' => 'value', // 在这我加一个网址 'url'=>'https://blog.kieng.cn/', ], ]; echo json_encode($arr);
好看了吧?
但是又发现 /
会被自动变为\/
,咋办呢?我们使用stripslashes
删除反斜线函数
<?php // 告诉浏览器我是 JSON header('content-type:application/json;charset=utf-8'); $arr = [ '汉字' => '这是一段汉字', 'en' => 'this is en', '1' => 12345689, 'arr' => [ 'key' => 'value', // 在这我加一个网址 'url' => 'https://blog.kieng.cn/', ], ]; echo stripslashes(json_encode($arr, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));
function jsonm($data) { header('content-type:application/json;charset=utf-8'); return stripslashes(json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT)); } jsonm(['code'=>1,'msg'=>'OJ8K']);