本文目录一览:
- 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