phpjsonapi
‘壹’ php中怎样将API返回的json数据转为html网页代码
json只是一种数据结构,并不能直接转化成html,HTML代码必须重新规划,json中的数据是可以渲染到html代码中的。
‘贰’ php怎么接收json类型数据
PHP接收JSON格式的数据
在API服务中,目前流行采用json形式来交互。
给前端调用的接口输出Json数据,这个比较简单,只需要组织好数据,用json_encode($array) 转化一下,前端就得到json格式的数据。
接收前端提交的json数据稍微复杂一点,原因是:PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型。因此,对型如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-www.form-urlencoded标准的数据类型。
‘叁’ 求php实现rest的api原理(json)
简单说就是利用curl或者fsocket等函数封装http请求,并将对应response抓取回来后再处理
‘肆’ php连接数据库后如何输出转换为json格式API,求详细解答,
<?php
$link=mysql_connect('localhost','root','root');
mysql_select_db('test',$link);
$sql="select*frombooks";
$result=mysql_query($sql);
//将结果集转为数组,每次取一行
while($row=mysql_fetch_assoc($result)){
$rows[]=$row;
}
echojson_encode($rows);
exit;
?>
‘伍’ 用PHP调用API返回JSON值,怎么把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数据格式
PHP接收JSON格式的数据
在API服务中,目前流行采用json形式来交互。
给前端调用的接口输出Json数据,这个比较简单,只需要组织好数据,用json_encode($array) 转化一下,前端就得到json格式的数据。
接收前端提交的json数据稍微复杂一点,原因是:PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型。因此,对型如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中解析json
目前,JSON已经成为最流行的数据交换格式之一,各大网站的API几乎都支持它。
从5.2版本开始,PHP原生提供json_encode()和json_decode()函数,前者用于编码,后者用于解码。
一、json_encode()
该函数主要用来将数组和对象,转换为json格式。先看一个数组转换的例子:
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);
结果为
{"a":1,"b":2,"c":3,"d":4,"e":5}
由于json只接受utf-8编码的字符,所以json_encode()的参数必须是utf-8编码,否则会得到空字符或者null。当中文使用GB2312编码,或者外文使用ISO-8859-1编码的时候,这一点要特别注意。
二、索引数组和关联数组
PHP支持两种数组,一种是只保存"值"(value)的索引数组(indexed array),另一种是保存"名值对"(name/value)的关联数组(associative array)。
由于javascript不支持关联数组,所以json_encode()只将索引数组(indexed array)转为数组格式,而将关联数组(associative array)转为对象格式。
比如,现在有一个索引数组
$arr = Array('one', 'two', 'three');
echo json_encode($arr);
结果为:
["one","two","three"]
三、类(class)的转换
下面是一个PHP的类: class Foo { const ERROR_CODE = '404'; public $public_ex = 'this is public'; private $private_ex = 'this is private!'; protected $protected_ex = 'this should be protected'; public function getErrorCode() { return self::ERROR_CODE; } }
现在,对这个类的实例进行json转换:
$foo = new Foo;
$foo_json = json_encode($foo);
echo $foo_json;
输出结果是
{"public_ex":"this is public"}
可以看到,除了公开变量(public),其他东西(常量、私有变量、方法等等)都遗失了。
‘捌’ php解析json数据
<?php
$json = '{"APPCount": 2,"data": [
{
"originalID": "991",
"APPName": "优酷",
"APPType": "APK",
"category": "视频",
"versionName": "3.8",
"versionCode": "5",
"packageName ": "cn.dsp.youku",
" APPStatus": "待审核",
"testReportURL": "",
"downloadCount": 0
},
{
"originalID": "992",
"APPName": "优酷",
"APPType": "APK",
"category": "视频",
"versionName": "3.8",
"versionCode": "5",
"packageName ": "cn.dsp.youku",
" APPStatus": "安全测评未通过",
"testReportURL": "http: //192.168.0.106: /SecurityTest/sdsd.pdf",
"downloadCount": 0
}
]
}';
$decode = json_decode($json,true);
echo $decode['data'][1]['testReportURL'];
‘玖’ php解析json数据的问题,寻找高人指点。
PHP有提供对JSON的解析支持,可以使用函数:json_decode
$json_string = <<<EOT
{
"status":"Success",
"request":{
"method":"POST",
"parameters":[
{
"name":"email",
"value":"[email protected]"
},
{
"name":"apikey",
"value":"ABCDEFG123456"
}
],
"from":"192.168.30.40",
"timestamp":1343285417993
},
"ration":14,
"logon_user":{
"guid":108142,
"email":"[email protected]",
"device_number":"UNKNOWN",
"is_male":true,
"role":"USER",
"account_state":"ACTIVE",
"logon_times":19,
"last_logon_time":1343285418001,
"last_logon_by":"EMAIL",
"logon_host":"192.168.30.40",
"logon_token":"",
"created_time":1343193738000,
"mobile_phone":"UNKNOWN",
"display_name":"lee.li",
"is_verified":false
}
}
EOT;
$json_object = json_decode($json_string);
echo $json_object->logon_user->guid;
‘拾’ php获得api返回的json数据后,如何解析
首先你需要使用对方约定方式获取,然后考虑是否使用缓存,最后获取到数据后使用json_decode函数解析成数组格式,接下来就是自己的逻辑代码了。