thinkphp5中JSON方法怎样运用
发布时间:2023-08-11 11:02:37 所属栏目:PHP教程 来源:互联网
导读: 本篇内容介绍了“thinkphp5中JSON方法如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望
本篇内容介绍了“thinkphp5中JSON方法如何使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! Json操作简介 在PHP中,将数组转换为JSON格式的数据只需要使用json_encode函数即可。 $data = array('a' => 1, 'b' => 2, 'c' => 3); echo json_encode($data); // {"a":1,"b":2,"c":3} 通过json_decode函数则可以将JSON格式的数据转换为数组: $json_data = '{"a":1,"b":2,"c":3}'; $data = json_decode($json_data, true); print_r($data); // Array ( [a] => 1 [b] => 2 [c] => 3 ) 在ThinkPHP5框架中,JSON操作更加简单,框架提供了Json类,可以方便地处理JSON数据,该类位于think\response\Json.php。 Json类使用 Json类继承自Response类,Response类是一个响应类的抽象父类,它的主要作用是将响应返回给客户端。Json类的主要作用是将数据以JSON格式返回给客户端。 我们可以通过以下方式创建Json实例: use think\response\Json; $data = array('a' => 1, 'b' => 2, 'c' => 3); $json = new Json($data); 或者通过以下方式创建: $json = json($data); Json方法介绍 Json类中提供了多个方法用于处理JSON数据,下面我们分别介绍一下。 (1)data方法 data方法用于设置要返回的数据。 $json = new Json(); $json->data($data); 或者: $json->data($data)->code(200)->header(['Cache-control' => 'no-cache,must-revalidate'])->send(); (2)content方法 content方法用于设置要返回的数据的类型,比如application/json的Content-Type类型。 $json = new Json(); $json->content('application/json'); (3)jsonp方法 jsonp方法用于生成JSONP数据,它接受两个参数,第一个参数为回调函数的名称,第二个参数为要返回的数据。 $json = new Json(); $json->jsonp('callback', $data); (4)code方法 code方法用于设置响应的状态码,比如200代表响应成功,404代表请求的资源不存在等。 $json = new Json(); $json->code(200); (5)header方法 header方法用于设置响应头信息。 $json = new Json(); $json->header(['Cache-control' => 'no-cache,must-revalidate']); (6)options方法 options方法用于设置响应选项。 $json = new Json(); $json->options(['json_encode_param' => JSON_UNESCAPED_UNICODE]); (7)send方法 send方法用于发送响应数据。 $json = new Json($data); $json->send(); Json实例 下面通过一个实例来了解如何使用Json类。假设我们需要一个JSON API返回商品列表,每个商品都有ID和名称两个属性。 首先是前端代码: $.ajax({ url: '/goods/list', dataType: 'jsonp', jsonp: 'callback', success: function(data) { if (data.code == 200) { $.each(data.data, function(index, item) { $('#goods-list').append('<li>' + item.id + ': ' + item.name + '</li>'); }); } else { alert('加载商品列表失败:' + data.msg); } }, error: function(jqXHR, textStatus, errorThrown) { alert('加载商品列表失败:' + textStatus); } }); 然后在控制器Goods中添加一个list函数: namespace app\index\controller; use think\response\Json; class Goods { public function list() { // 模拟商品数据 $goods_list = array( array('id' => 1, 'name' => '商品1'), array('id' => 2, 'name' => '商品2'), array('id' => 3, 'name' => '商品3'), ); // 返回JSON数据 $json = json($goods_list); $jsonp_callback = input('get.callback'); if (!empty($jsonp_callback)) { $json->jsonp($jsonp_callback); } return $json; } } 最后,在路由中增加一个规则: Route::get('/goods/list', 'index/Goods/list'); 运行程序,访问路径/goods/list即可看到返回的JSON数据。 (编辑:通辽站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐