PHP解析JSON的簡單操作
JSON是一種輕量級的數據交換格式,常用于異構系統之間數據的傳遞。PHP操作JSON數據較為方便,本文將介紹PHP解析JSON的簡單操作。
JSON數據格式解讀
JSON數據通常由鍵值對(key-value)構成,以逗號(,)分隔,大括號({})包括對象(object),中括號([])包括數組(array)。
{ "name": "張三", "age": 20, "hobby": [ "籃球", "閱讀", "音樂" ], "address": { "province": "廣東", "city": "廣州" } }
以上JSON數據包括了一個名為“張三”的人的基本信息,其中hobby為數組,address為嵌套的對象。
將JSON數據解析為PHP對象
PHP的json_decode()函數可以將JSON數據解析為PHP對象或數組。
$jsonStr = '{"name": "張三", "age": 20}'; $obj = json_decode($jsonStr); echo $obj->name; // 輸出:張三 echo $obj->age; // 輸出:20
將JSON數據解析為PHP數組的使用方法如下:
$jsonStr = '{"hobby": ["籃球", "閱讀", "音樂"]}'; $arr = json_decode($jsonStr, true); print_r($arr); // 輸出:Array ( [hobby] =>Array ( [0] =>籃球 [1] =>閱讀 [2] =>音樂 ) )
將PHP對象(數組)編碼為JSON數據
PHP的json_encode()函數可以將PHP對象或數組編碼為JSON數據。
$data = array( 'name' =>'李四', 'age' =>22, 'hobby' =>array('繪畫', '游泳', '旅行'), 'address' =>array( 'province' =>'湖南', 'city' =>'長沙' ) ); echo json_encode($data); // 輸出:{"name":"李四","age":22,"hobby":["繪畫","游泳","旅行"],"address":{"province":"湖南","city":"長沙"}}
使用JSONP實現跨域請求
JSONP是一種跨域請求方式,基本思路是在客戶端添加一個script標簽,將JSON數據包裝為一個JavaScript函數的調用,并通過script的src屬性將JSON數據獲取到頁面中解析。
需要約定的事項:回調函數的參數名、請求的url(需要帶有回調函數名參數)。
// 原生JavaScript實現JSONP跨域請求 function jsonp(url, callback) { var script = document.createElement('script'); script.type = 'text/javascript'; script.src = url + '?callback=' + callback; document.getElementsByTagName('head')[0].appendChild(script); } jsonp('http://example.com/data?callback=myCallback', 'myCallback');
當請求http://example.com/data時,服務端返回的JSON數據為:myCallback( '{"name":"Tom","age":18,"gender":"男"}' ),因此在客戶端myCallback函數中即可解析出數據。
總結
以上就是幾種操作JSON的基礎方法。需要注意的是,在解析JSON時,需要對JSON結構進行完整的檢查,防止無法預知的錯誤。在跨域請求時,需要注意數據的安全性,避免遭受XSS攻擊。