本篇內(nèi)容介紹了“thinkphp5中JSON方法如何使用”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
站在用戶的角度思考問(wèn)題,與客戶深入溝通,找到錦州網(wǎng)站設(shè)計(jì)與錦州網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋錦州地區(qū)。
Json操作簡(jiǎn)介
在PHP中,將數(shù)組轉(zhuǎn)換為JSON格式的數(shù)據(jù)只需要使用json_encode函數(shù)即可。
$data = array('a' => 1, 'b' => 2, 'c' => 3);
echo json_encode($data); // {"a":1,"b":2,"c":3}
通過(guò)json_decode函數(shù)則可以將JSON格式的數(shù)據(jù)轉(zhuǎn)換為數(shù)組:
$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操作更加簡(jiǎn)單,框架提供了Json類,可以方便地處理JSON數(shù)據(jù),該類位于think\response\Json.php。
Json類使用
Json類繼承自Response類,Response類是一個(gè)響應(yīng)類的抽象父類,它的主要作用是將響應(yīng)返回給客戶端。Json類的主要作用是將數(shù)據(jù)以JSON格式返回給客戶端。
我們可以通過(guò)以下方式創(chuàng)建Json實(shí)例:
use think\response\Json;
$data = array('a' => 1, 'b' => 2, 'c' => 3);
$json = new Json($data);
或者通過(guò)以下方式創(chuàng)建:
$json = json($data);
Json方法介紹
Json類中提供了多個(gè)方法用于處理JSON數(shù)據(jù),下面我們分別介紹一下。
(1)data方法
data方法用于設(shè)置要返回的數(shù)據(jù)。
$json = new Json();
$json->data($data);
或者:
$json->data($data)->code(200)->header(['Cache-control' => 'no-cache,must-revalidate'])->send();
(2)content方法
content方法用于設(shè)置要返回的數(shù)據(jù)的類型,比如application/json的Content-Type類型。
$json = new Json();
$json->content('application/json');
(3)jsonp方法
jsonp方法用于生成JSONP數(shù)據(jù),它接受兩個(gè)參數(shù),第一個(gè)參數(shù)為回調(diào)函數(shù)的名稱,第二個(gè)參數(shù)為要返回的數(shù)據(jù)。
$json = new Json();
$json->jsonp('callback', $data);
(4)code方法
code方法用于設(shè)置響應(yīng)的狀態(tài)碼,比如200代表響應(yīng)成功,404代表請(qǐng)求的資源不存在等。
$json = new Json();
$json->code(200);
(5)header方法
header方法用于設(shè)置響應(yīng)頭信息。
$json = new Json();
$json->header(['Cache-control' => 'no-cache,must-revalidate']);
(6)options方法
options方法用于設(shè)置響應(yīng)選項(xiàng)。
$json = new Json();
$json->options(['json_encode_param' => JSON_UNESCAPED_UNICODE]);
(7)send方法
send方法用于發(fā)送響應(yīng)數(shù)據(jù)。
$json = new Json($data);
$json->send();
Json實(shí)例
下面通過(guò)一個(gè)實(shí)例來(lái)了解如何使用Json類。假設(shè)我們需要一個(gè)JSON API返回商品列表,每個(gè)商品都有ID和名稱兩個(gè)屬性。
首先是前端代碼:
$.ajax({
url: '/goods/list',
dataType: 'jsonp',
jsonp: 'callback',
success: function(data) {
if (data.code == 200) {
$.each(data.data, function(index, item) {
$('#goods-list').append('
然后在控制器Goods中添加一個(gè)list函數(shù):
namespace app\index\controller;
use think\response\Json;
class Goods
{
public function list()
{
// 模擬商品數(shù)據(jù)
$goods_list = array(
array('id' => 1, 'name' => '商品1'),
array('id' => 2, 'name' => '商品2'),
array('id' => 3, 'name' => '商品3'),
);
// 返回JSON數(shù)據(jù)
$json = json($goods_list);
$jsonp_callback = input('get.callback');
if (!empty($jsonp_callback)) {
$json->jsonp($jsonp_callback);
}
return $json;
}
}
最后,在路由中增加一個(gè)規(guī)則:
Route::get('/goods/list', 'index/Goods/list');
運(yùn)行程序,訪問(wèn)路徑/goods/list即可看到返回的JSON數(shù)據(jù)。
“thinkphp5中JSON方法如何使用”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!