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函數解析成數組格式,接下來就是自己的邏輯代碼了。