本文目錄一覽:
- 1、如何在PHP中解析json
- 2、怎麼解析從PHP傳過來的JSON數據?
- 3、php解析json並輸出到html頁面
- 4、php解析json數組問題。
- 5、php怎樣接收整個json數組
- 6、php提取json數組裡面的值怎麼提?
如何在PHP中解析json
PHP裡面有json_encode(數組)可以把數組給轉換成JSON字符串,
而json_decode(JSON字符串,boolean)可以把JSON字符串轉換成數組或者對象類型,第二個參數boolean默認為false表示對象類型,true表示解析為數組類型通過下表訪問
怎麼解析從PHP傳過來的JSON數據?
js解析處理JSON格式的數據,有多種方法.
(1)現在大多標準瀏覽器,都帶有對JSON的支持,可以直接通過js調用處理:
var obj=JSON.parse(str);//str是php傳來的json數據
(2)使用了jquery等js庫,一般都會提供對json的支持,比如使用jQuery:
var obj=jQuery.parseJSON(str);//str是php傳來的json數據
(3)可以使用json.js來增加瀏覽器的功能(一般針對性引用,在瀏覽器不支持json時加載json.js)
(4)簡單粗暴的解決方法:
var obj = eval (“(” + txt + “)”);//txt是php傳來的json數據
但是使用eval不安全,而且需要是有效的json數據.如果你能保證是安全且正確的數據,可以這樣簡單處理.
php解析json並輸出到html頁面
用json_decode()將json字符串轉化成php數組,然後直接循環數組取出值即可。
?php
$content= file_get_contents(‘獲取json字符串的url’);
$content = json_decode($content);//將json字符串轉化成php數組
foreach ($content as $key ) {//循環數組
echo ‘li’ . $key[‘city’] . ‘/li’;
echo ‘li’ . $key[‘city_en’] . ‘/li’;
echo ‘li’ . $key[‘date_y’] . ‘/li’;
echo ‘li’ . $key[‘week’] . ‘/li’;
}
php解析json數組問題。
$a = json_decode(‘{“status”:0,”total”:1,”size”:1,”contents”:[{“title”:”111″,”location”:[113.11509,23.012777],”city”:”\u4f5b\u5c71\u5e02″,”create_time”:1385386545,”geotable_id”:38432,”address”:”\u5e7f\u4e1c\u7701\u4f5b\u5c71\u5e02\u7985\u57ce\u533a\u6c7e\u6c5f\u5357\u8def8\u53f7″,”province”:”\u5e7f\u4e1c\u7701″,”district”:”\u7985\u57ce\u533a”,”map_id”:”1″,”uid”:42504634,”coord_type”:3,”type”:0,”distance”:370,”weight”:0}]}’,true);
json_decode第二個參數true
解析出來就是array(4) { [“status”]= int(0) [“total”]= int(1) [“size”]= int(1) [“contents”]= array(1) { [0]= array(14) { [“title”]= string(3) “111” [“location”]= array(2) { [0]= float(113.11509) [1]= float(23.012777) } [“city”]= string(9) “佛山市” [“create_time”]= int(1385386545) [“geotable_id”]= int(38432) [“address”]= string(43) “廣東省佛山市禪城區汾江南路8號” [“province”]= string(9) “廣東省” [“district”]= string(9) “禪城區” [“map_id”]= string(1) “1” [“uid”]= int(42504634) [“coord_type”]= int(3) [“type”]= int(0) [“distance”]= int(370) [“weight”]= int(0) } } }
這樣的數組會取內容了吧
php怎樣接收整個json數組
PHP接收JSON格式的數據
在API服務中,目前流行採用json形式來交互。
給前端調用的接口輸出Json數據,這個比較簡單,只需要組織好數據,用json_encode($array) 轉化一下,前端就得到json格式的數據。
接收前端提交的json數據稍微複雜一點,原因是:PHP默認識別的數據類型是application/x-標準的數據類型。因此,對型如text/xml 或者 soap 或者 application/octet-stream 和application/json格式之類的內容無法解析,如果用$_POST數組來接收就會失敗!
此時可以使用$GLOBALS[‘HTTP_RAW_POST_DATA’] 或 file_get_contents(‘php://input’) 來獲取提交的數據
查看手冊,可以發現$GLOBALS[‘HTTP_RAW_POST_DATA’] 和 $_POST的區別:
$_POST:通過 HTTP POST 方法傳遞的變量組成的數組,是自動全局變量。
$GLOBALS[‘HTTP_RAW_POST_DATA’] :總是產生 $HTTP_RAW_POST_DATA 變量包含有原始的 POST 數據。此變量僅在碰到未識別 MIME 類型的數據時產生。$HTTP_RAW_POST_DATA 對於 enctype=”multipart/form-data” 表單數據不可用。也就是說基本上$GLOBALS[‘HTTP_RAW_POST_DATA’] 和 $_POST是一樣的。但是如果post過來的數據不是PHP能夠識別的,你可以用 $GLOBALS[‘HTTP_RAW_POST_DATA’]來接收,比如 text/xml 或者 soap 等等。
補充說明:PHP默認識別的數據類型是application/x-標準的數據類型。
php提取json數組裡面的值怎麼提?
先把獲取的內容打印出來 ,看看是不是正常返回的數據
$filename = “”;
$content = file_get_contents($filename);
$json = @json_decode($content );
if($json){
$city=$json-city;
}else{
echo “json解析失敗:”.$content;
}
也可以根據你的框架功能,寫成日誌,方便出錯時隨時檢查
另外 ,json_decode 可以接收一個參數來確定解析成對象還是數組
$content = ‘{“ip”:”120.239.177.231″,”pro”:”廣東省”,”proCode”:”440000″,”city”:”中山市”,”cityCode”:”442000″,”region”:””,”regionCode”:”0″,”addr”:”廣東省中山市 移通”,”regionNames”:””,”err”:””}’;
$json = json_decode($content,true);
echo $json[‘city’];
參考文檔:PHP json_decode
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/160960.html