php實現(xiàn)將普通數(shù)據(jù)轉化為json數(shù)據(jù)
PHP API接口必備之輸出json格式數(shù)據(jù)
在日常的開發(fā)工作中免不了要寫接口,json格式文本的輸出是制作接口必須掌握的,現(xiàn)在通行的接口基本是采用json格式的數(shù)據(jù),簡單的php json文件輸出
json接口如何生成?或者是如何將普通數(shù)據(jù)轉化為json數(shù)據(jù)?
注意:如果不加header直接輸出json_encode的值的話,返回的是字符串不是對象,js那邊就需要先eval('('+data+')')轉化為對象,再進行取值
<?php header('content-type:application/json;charset=utf8'); $arr=array( array( 'name'=>'zhangsan', 'sex' =>'man', 'age' =>18, ), array( 'name'=>'lisi', 'sex' =>'women', 'age' =>20, ), array( 'name'=>'wangwu', 'sex' =>'man', 'age' =>19, ), ); $json=json_encode($arr); echo $json; ?>
這樣,我們就可以得到一個輸出形式為json格式的頁面
使用 php 來做一個簡單的接口,客戶端傳入數(shù)據(jù),該接口返回 JSON 格式數(shù)據(jù)
使用php 造json數(shù)據(jù)接口
<?php /* * (PHP簡單封裝JSON數(shù)據(jù)接口) * @param integer $code 狀態(tài)碼 * @param string $message 提示信息 * @param array $data 數(shù)據(jù) * return json(string) */ header('content-type:application/json;charset=utf8'); class Response { public static function json($code, $message = '', $data = []){ # 判斷參數(shù)有效性及錯誤處理 // code... # 結果(最終數(shù)組) $result = [ "code" => $code, "message" => $message, "data" => $data ]; # 轉換為json并打印測試 echo json_encode($result); exit; } } # 創(chuàng)建數(shù)組 $arr = [ "id" => "1", "name" => "wang" ]; # 調用json接口(假設狀態(tài)碼200代表成功) Response::json(200, "數(shù)據(jù)返回成功", $arr); ?>
這樣,我們就可以得到一個輸出形式為json格式的頁面
<?php header('Content-Type:application/json;charset=utf8'); $arr = [ "download_url" => "http://xxx.xxx.xxx.xxx/update/EasyClick/release.iec", "version" => "1.1.0", "dialog" => true, "msg" => "更新公告", "force" => false ]; echo json_encode($arr); ?>
PHP json_encode() 用于對變量進行 JSON 編碼,該函數(shù)如果執(zhí)行成功返回 JSON 數(shù)據(jù),否則返回 FALSE 。
PHP json_decode() 函數(shù)用于對 JSON 格式的字符串進行解碼,并轉換為 PHP 變量。
<?php header('content-type:application/json;charset=utf8'); $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); $en_ret = json_encode($arr); echo $en_ret; echo "<br>"; $de_ret = json_decode($en_ret); echo $de_ret->e; echo "<br>"; ?>
JSON 值可以是:
- 數(shù)字(整數(shù)或浮點數(shù))
- 字符串(在雙引號中)
- 邏輯值(true 或 false)
- 數(shù)組(在方括號中)
- 對象(在花括號中)
- null
前端一般和后端傳遞數(shù)據(jù)選擇JSON是因為
(1)JSON是純文本格式,是獨立于語言和平臺的。
(2)生成和解析相對于XML而言要簡單。
(3)讀寫的速度更快。
php中json_encode編碼成功的話返回一個JSON格式的字符串,失敗的話返回一個false(var_dump一下可以看看是不是string類型)
后端將這個json數(shù)據(jù)(string)返回給前端,前端再對這個json數(shù)據(jù)也就是string進行下一步處理。
而json_decode($jsondata,bool),一般是將前臺傳來的json數(shù)據(jù)(string)解碼為對象類型(bool為false時,默認false),當bool為true時,則將json(string)轉化為數(shù)組類型,再進下一步處理。
對象類型的操作和數(shù)組類型是不一樣的
<?php header('content-type:application/json;charset=utf8'); $data = array('a'=>'好','b'=>'hi','c'=>'good','d'=>'nice'); $jsondata = json_encode($data,JSON_UNESCAPED_UNICODE);//加上JSON_UNESCAPED_UNICODE就不會自動對中文編碼 echo $jsondata; //結果{"a":"好","b":"hi","c":"good","d":"nice"},一條JSON格式的字符串 $array = json_decode($jsondata,TRUE); var_dump($array['b']);//調用數(shù)組元素 $obj = json_decode($jsondata); var_dump($obj->c);//調用對象元素 ?>
注意: json_encode 和 json_decode只支持utf-8編碼的中文字符,GBK的中文字符要用json就得轉換一下
PHP5.4版本,已經(jīng)給Json新增了一個選項: JSON_UNESCAPED_UNICODE。加上這個選項后,就不會自動把中文編碼了。
PHP數(shù)組與JSON互相轉換
PHP數(shù)組與JSON互相轉換,數(shù)組轉json:json_encode();json轉數(shù)組:json_decode();
使用json_encode轉json時會發(fā)現(xiàn)中文字符會出現(xiàn)亂碼
只需要在json_encode();函數(shù)中加入JSON_UNESCAPED_UNICODE即可。
1、PHP數(shù)組轉JSON
<?php //header('content-type:application/json;charset=utf8'); $array = Array('title' => '標題', 'url' => 'meitu.jpg'); $json = json_encode($array); echo $json; //輸出結果: {"title":"\u6807\u9898","url":"meitu.jpg"} ?>
2、PHP數(shù)組轉JSON中文字符不亂碼
<?php //header('content-type:application/json;charset=utf8'); $array = Array('title' => '標題', 'url' => 'meitu.jpg'); $json = json_encode($array, JSON_UNESCAPED_UNICODE); echo $json; //輸出結果: {"title":"標題","url":"meitu.jpg"} ?>
3、PHP JSON轉數(shù)組
<?php $json = '{"title":"標題","url":"meitu.jpg"}'; $array_json=json_decode($json,true); print_r($array_json); ?>
4、PHP JSON轉對象
<?php $json = '{"title":"標題","url":"meitu.jpg"}'; $Object_json=json_decode($json,false); print_r($Object_json); ?>
以上就是php實現(xiàn)將普通數(shù)據(jù)轉化為json數(shù)據(jù)的詳細內容,更多關于php數(shù)據(jù)轉json的資料請關注腳本之家其它相關文章!
相關文章
PHP排序算法之快速排序(Quick Sort)及其優(yōu)化算法詳解
這篇文章主要介紹了PHP排序算法之快速排序(Quick Sort)及其優(yōu)化算法,結合實例形式分析了php快速排序的原理、實現(xiàn)方法,并分析了各種優(yōu)化技巧與操作注意事項,需要的朋友可以參考下2018-04-04PHP中一個有趣的preg_replace函數(shù)詳解
這篇文章主要給大家介紹了關于PHP中一個有趣的preg_replace函數(shù)的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用php具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2018-08-08