聊聊thinkphp5中JSON方法的使用方法

隨著web應用程序的普及,ajax技術的使用越來越廣泛。在處理前端與后端數據交互時,json(javascript對象表示)是一種流行的數據格式。在thinkphp5框架中,json操作非常簡單,本文將介紹如何使用thinkphp5中的json方法。

  1. 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數據,該類位于thinkresponseJson.php。

  1. Json類使用

Json類繼承自Response類,Response類是一個響應類的抽象父類,它的主要作用是將響應返回給客戶端。Json類的主要作用是將數據以JSON格式返回給客戶端。

立即學習PHP免費學習筆記(深入)”;

我們可以通過以下方式創建Json實例:

use thinkresponseJson;  $data = array('a' => 1, 'b' => 2, 'c' => 3); $json = new Json($data);

或者通過以下方式創建:

$json = json($data);
  1. 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();
  1. 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 appindexcontroller;  use thinkresponseJson;  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數據。

本文只是介紹了ThinkPHP5框架中Json類的一些基本使用方法,還有更多高級用法需要讀者自行探索。希望本文能為大家了解ThinkPHP5框架的JSON操作提供一些參考。

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享