概述
創(chuàng)新互聯(lián)公司專注于企業(yè)營銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、定安網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5頁面制作、電子商務(wù)商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為定安等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
不對。
返回json用的json_encode()方法沒錯(cuò),但是需要在頭部聲明格式。
代碼解析
php返回需要用json_encode()方法來將需要轉(zhuǎn)換的字符串轉(zhuǎn)換成json編碼格式(注意:僅僅更換文件內(nèi)容,而返回的文件依然為文本格式且編碼為gtk)
所以,這里需要在php頭部聲明
header('Content-Type:text/json;charset=utf-8');
拓展內(nèi)容
json
JSON(JavaScript?Object Notation, JS 對象簡譜) 是一種輕量級的數(shù)據(jù)交換格式。它基于?ECMAScript?(歐洲計(jì)算機(jī)協(xié)會制定的js規(guī)范)的一個(gè)子集,采用完全獨(dú)立于編程語言的文本格式來存儲和表示數(shù)據(jù)。簡潔和清晰的層次結(jié)構(gòu)使得 JSON 成為理想的數(shù)據(jù)交換語言。 易于人閱讀和編寫,同時(shí)也易于機(jī)器解析和生成,并有效地提升網(wǎng)絡(luò)傳輸效率。
json通常被作為配置文件,常見還有.ini
PHP接收J(rèn)SON格式的數(shù)據(jù)
在API服務(wù)中,目前流行采用json形式來交互。
給前端調(diào)用的接口輸出Json數(shù)據(jù),這個(gè)比較簡單,只需要組織好數(shù)據(jù),用json_encode($array) 轉(zhuǎn)化一下,前端就得到j(luò)son格式的數(shù)據(jù)。
接收前端提交的json數(shù)據(jù)稍微復(fù)雜一點(diǎn),原因是:PHP默認(rèn)識別的數(shù)據(jù)類型是application/x-標(biāo)準(zhǔn)的數(shù)據(jù)類型。因此,對型如text/xml 或者 soap 或者 application/octet-stream 和application/json格式之類的內(nèi)容無法解析,如果用$_POST數(shù)組來接收就會失敗!
此時(shí)可以使用$GLOBALS['HTTP_RAW_POST_DATA'] 或 file_get_contents('php://input') 來獲取提交的數(shù)據(jù)
查看手冊,可以發(fā)現(xiàn)$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST的區(qū)別:
$_POST:通過 HTTP POST 方法傳遞的變量組成的數(shù)組,是自動全局變量。
$GLOBALS['HTTP_RAW_POST_DATA'] :總是產(chǎn)生 $HTTP_RAW_POST_DATA 變量包含有原始的 POST 數(shù)據(jù)。此變量僅在碰到未識別 MIME 類型的數(shù)據(jù)時(shí)產(chǎn)生。$HTTP_RAW_POST_DATA 對于 enctype="multipart/form-data" 表單數(shù)據(jù)不可用。也就是說基本上$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST是一樣的。但是如果post過來的數(shù)據(jù)不是PHP能夠識別的,你可以用 $GLOBALS['HTTP_RAW_POST_DATA']來接收,比如 text/xml 或者 soap 等等。
補(bǔ)充說明:PHP默認(rèn)識別的數(shù)據(jù)類型是application/x-標(biāo)準(zhǔn)的數(shù)據(jù)類型。
對于json,PHP有對應(yīng)的方法進(jìn)行操作。
一般而言,json會以字符串形式傳給PHP腳本,一般都是放在$_POST里面,
14
?php
// 接收
$json_parameter = $_POST['json_str'];
// 處理, 變成數(shù)組
$array = json_decode($json_parameter);
// PHP 把數(shù)組數(shù)據(jù)變成json格式字符串,發(fā)給頁面
$demo = array(
'key' = 'value',
'key2' = 'value2'
);
$demo_json = json_encode($demo); // 格式是{"key":"value","key2":"value2"}
echo $demo_json;
本文實(shí)例講述了PHP生成及獲取JSON文件的方法。分享給大家供大家參考,具體如下:
首先定義一個(gè)數(shù)組,然后遍歷數(shù)據(jù)表,把相應(yīng)的數(shù)據(jù)放到數(shù)組中,最后通過json_encode()轉(zhuǎn)化數(shù)組
json_encode()
函數(shù)的功能是將數(shù)值轉(zhuǎn)換成
JSON
數(shù)據(jù)存儲格式。
putjson.php:
?php
//
生成一個(gè)PHP數(shù)組
$data
=
array();
$data[0]
=
array('1','吳者然','onestopweb.cn');
$data[1]
=
array('2','何開','iteye.com');
//
把PHP數(shù)組轉(zhuǎn)成JSON字符串
$json_string
=
json_encode($data);
//
寫入文件
file_put_contents('test.json',
$json_string);
?
有同名的
JSON
文件則覆蓋,沒有則創(chuàng)建。
生成或覆蓋的
JSON
如下:
復(fù)制代碼
代碼如下:[["1","\u811A\u672C\u4E4B\u5BB6",""],["2","\u7F16\u7A0B\u5F00\u53D1","jb51.net"]]
然后,把
JSON
文件中的數(shù)據(jù)讀取到PHP變量中。
getjson.php:
?php
//
從文件中讀取數(shù)據(jù)到PHP變量
$json_string
=
file_get_contents('test.json');
//
把JSON字符串轉(zhuǎn)成PHP數(shù)組
$data
=
json_decode($json_string,
true);
//
顯示出來看看
var_dump($data);
echo
'brbr';
print_r($data);
echo
'brbr';
echo
'編號:'.$data[0][0].'
姓名:'.$data[0][1].'
網(wǎng)址:'.$data[0][2];
echo
'br';
echo
'編號:'.$data[1][0].'
姓名:'.$data[1][1].'
網(wǎng)址:'.$data[1][2];
?
效果圖:
PS:這里再為大家推薦幾款比較實(shí)用的json在線工具供大家參考使用:
在線JSON代碼檢驗(yàn)、檢驗(yàn)、美化、格式化工具:
JSON在線格式化工具:
在線XML/JSON互相轉(zhuǎn)換工具:
json代碼在線格式化/美化/壓縮/編輯/轉(zhuǎn)換工具:
C語言風(fēng)格/HTML/CSS/json代碼格式化美化工具:
更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP中json格式數(shù)據(jù)操作技巧匯總》、《PHP針對XML文件操作技巧總結(jié)》、《PHP基本語法入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家PHP程序設(shè)計(jì)有所幫助。
JSON,全稱是JavaScript
Object
Notation。它是基于JavaScript編程語言ECMA-262
3rd
Edition-December
1999標(biāo)準(zhǔn)的一種輕量級的數(shù)據(jù)交換格式,主要用于跟服務(wù)器進(jìn)行交換數(shù)據(jù)。跟XML相類似,它獨(dú)立語言,在跨平臺數(shù)據(jù)傳輸上有很大的優(yōu)勢
新建文件json.php,先做encode操作:
//encode
//生成JSON格式數(shù)據(jù)
$arr
=
array(1,2,3,4,5,6,7,8,9,'Hello','PHP');
echo
json_encode($arr);//json_encode:把一個(gè)對象轉(zhuǎn)換成json格式數(shù)據(jù)
得到的結(jié)果是[1,2,3,4,5,6,7,8,9,"Hello","PHP"]
再來做decode操作:
//decode
解碼
$jsonStr
=
'{"h":"Hello","w":"World","0":[3,2,1]}';
$obj
=
json_decode($jsonStr);
echo
$obj-h;//使用成員訪問的方式就可以得到結(jié)果
知道簡單的使用方法后,可以嘗試著抓API數(shù)據(jù),比如天氣...
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。