国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > PHP > 正文

PHP JSON數據處理實例程序用法

2024-05-04 21:47:28
字體:
來源:轉載
供稿:網友

在php中JSON數據處理最常用的就是直接使用json_encode()與json_decode()函數進行處理,就這兩個json處理函數給各位同學詳細介紹json在應用中的各種用法.

json_encode(),PHP數據->JSON

json_encode只有一個參數,參數除了resource 類型之外,可以為任何數據類型,但是我們一般是傳入數組,代碼如下:

  1. $arr = array(  
  2.     "name" => "manson",  
  3.     "age" => 23,  
  4.     "sex" => 1  
  5. );  
  6.    
  7. $json_str = json_encode($arr);  
  8. var_dump($json_str); 

得出的是json字符串:{"name":"manson","age":23,"sex":1},這時一般是把轉換后的字符串輸出到前端處理,常用于ajax做數據交互,或者一些前端模板的數據輸出。

json_encode需要注意的一個問題就是中文的編碼問題,假如PHP頁面的編碼是非utf-8的,在json_encode之前,必須把有中文內容的部分轉換成utf-8編碼,否則輸出到前端的時候會亂碼。解決的方法網上有很多,這里舉一個簡單的編碼轉換例子,代碼如下:

  1. $arr = array(  
  2.     "name" => "張三",  
  3.     "age" => 23,  
  4.     "sex" => 1  
  5. );  
  6. $arr['name'] = iconv("gbk","utf-8",$arr['name']);  
  7. $json_str = json_encode($arr); 

PHP數據,json_decode有兩個參數,第一個參數是待解碼的json字符串,傳入的一定要是一個合符規(guī)范的json格式,其實json_decode就是json_encode的逆過程,代碼如下:

  1. $json_str = '{"name":"manson","age":23,"sex":1}';  
  2. $arr = json_decode($json_str,true);  
  3. var_dump($arr); 

這里需要注意的是,json_decode的第2個參數傳的是true,意思是解碼后返回數組格式,假如傳false或是不傳第2個參數,解碼后將返回對象格式,例如上面的代碼返回對象格式是如下代碼:

  1. object(stdClass)#1 (3) {  
  2.   ["name"]=>  
  3.   string(6) "manson" 
  4.   ["age"]=>  
  5.   int(23)  
  6.   ["sex"]=>  
  7.   int(1)  

對象格式相對于數組格式來說,取得對應數據的難度會增大,特別對于多層級數據結構,還是轉換成數組形式為好,也就是json_decode第2個參數記得傳true。

處理提交的JSON數據

POST方式(GET方式也要注意)向PHP提交了一個JSON數據,比如:{"a":1,"b":2}

在PHP中取出這個數據:$s=$_POST['data'] ;//or $_GET['data']

然后這個串取出后是被轉義的:{"a":1,"b":2}

如果直接調用:

  1. $obj = json_decode($s);  
  2. print_r($obj);   
  3. echo $obj->a; 

是錯誤的,會報告錯誤,如果$s直接定義:$s='{"a":1,"b":2}';則沒有問題,所以在PHP中處理JSON時需要進行一下轉義處理: $s=stripslashes($_POST['data']) ;這樣再進行json解碼就可以了.

PHP 獲取接口內容,假設接口文件頁面為:/api.php?action=open_getBlogList&only_recommend=1&limit=5,那么我們可以使用下面語句獲取這個接口文件內容:

  1. $handle = fopen("/api.php?action=open_getBlogList&only_recommend=1&limit=5","rb"); 
  2. $content = ""
  3. while (!feof($handle)) { 
  4.     $content .= fread($handle, 10000); 
  5. fclose($handle); 

這樣 content 保存的就是 JSON api 內容,PHP 解析 JSON 并顯示,原始的內容是無法直接調用的,必須被 PHP 進行進一步處理,才能被調用顯示在網頁中,在 PHP 5.2 及后續(xù)版本中,使用 json_decode() 函數來解析 JSON 數據,將其轉換成 PHP 可以調用的數據格式,例如:$content = json_decode($content);

解析之后呢,我們就可以按照 PHP 中調用數組數據的方法一樣的調用 JSON 中的數據,這個調用方法需要按照具體的 JSON 數據格式來寫,演示請看下面,關于 json_decode 函數的使用,具體看 PHP 手冊,這里不再贅述:http://php.net/manual/en/function.json-decode.php

實戰(zhàn) api:細心的朋友會發(fā)現 潛行者m 博客的邊欄最下面多了一個“友文推薦”模塊,里面推薦了一些瓊臺博客的文章。

友文推薦是瓊臺博客倡議的一種博客之間交流方式,比傳統的友情鏈接更有效,同時實現了博客內容互補。由于瓊臺博客的博客程序是他自己本人編寫的,所以他提供了 JSON api 接口,可以獲取到最新的可推薦的文章。

本人使用 PHP 獲取這個 JSON 接口,然后輸出到自己博客的邊欄中,下面來實戰(zhàn)操作一下。

第一步,查看 api 調用方式

根據文檔,我使用了 /api.php?action=open_getBlogList&only_recommend=1&limit=5 這樣的參數,意思就是調用五條他推薦的文章。

第二步,獲取 api 結構數據

很簡單,上面說過了,具體代碼如下:

  1. $handle = fopen("/api.php?action=open_getBlogList&only_recommend=1&limit=5","rb"); 
  2. $content = ""
  3. while (!feof($handle)) { 
  4.     $content .= fread($handle, 10000); 

fclose($handle);先打開這數據文件,然后把所有內容保存到 content 變量中,因為可以肯定 api 數據不會超過 10000個字符,所以用 10000 作為 fread 函數的第二個參數。這樣,api 返回的 JSON 數據就保存在了 content 變量中。

第三步,解析并輸出內容

使用下面代碼解析數據,然后調用輸出

  1. $content = json_decode($content); 
  2. foreach ($content->data as $key) { 
  3.     echo '<li><a target="_blank" href="'.$key->b_url.'">'.$key->b_title.'</a></li>'
首先對 content 變量中的 JSON  數據處理,然后變成 PHP 可以調用的數據,再使用 foreach 遍歷輸出這五條內容,按照我需要的 HTML 格式,將內容插入進去即可。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 林口县| 当雄县| 新巴尔虎左旗| 二连浩特市| 岳普湖县| 石景山区| 贡嘎县| 张家界市| 石台县| 荣昌县| 天峨县| 武乡县| 偃师市| 安图县| 静海县| 贡山| 盐亭县| 宁国市| 密云县| 贵南县| 英德市| 岳西县| 清徐县| 波密县| 利津县| 华阴市| 峨眉山市| 上栗县| 江津市| 阳西县| 仙桃市| 岑溪市| 永安市| 平山县| 东乡县| 岗巴县| 汾阳市| 耿马| 阿鲁科尔沁旗| 明水县| 吉水县|