加入收藏 | 设为首页 | 会员中心 | 我要投稿 通辽站长网 (https://www.0475zz.com/)- 图像处理、建站、语音技术、AI行业应用、媒体智能!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

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数据。
 

(编辑:通辽站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章