具體操作
JSON是什嗎?
JSON一種用於在互連網絡中傳輸超量資料的資料交換格式。雖然在Internet中交換資料XML佔主要地位,然而JSON卻更加的簡單並且適用於輕型的資料。
儘管JSON當初是被JavaScript發明並且用於訪問遠端資料的,它現在卻被廣泛適用於各種語言,因為JSON是一種於平台無關的資料格式。
JSON資料的資料類型和執行個體
JSON支援各種各樣的資料類型,包括數字、字串、布爾值、數組資料甚至對象資料(是一個集合,每個元素都是鍵:值對形式,使用逗號分隔,並且使用大括弧包裹)。
讓我們看一個JSON資料的簡單例子,該例子表示一個僱員的詳細資料:
| 代碼如下 |
複製代碼 |
{“id”:”1″,”name”:”mike”,”country”:”usa”,”office”:["microsoft","oracle"]} |
使用PHP建立和解析JSON資料的方法
PHP從5.2.0版本以後提供了JSON擴充來處理JSON資料,通過PHP有兩個函數json_encode()和json_decode非常方便的對JSON資料進行轉換和解析。
首先,讓我們看一段PHP用數組建立如上各式的JSON的代碼:
| 代碼如下 |
複製代碼 |
$json_data = array ('id'=>1,'name'=>"mike",'country'=>'usa',"office"=>array("microsoft","oracle")); echo json_encode($json_data); |
該代碼直接產生了JSON資料。現在讓我們用PHP將上面的JSON解碼:
| 代碼如下 |
複製代碼 |
$json_string='{"id":1,"name":"mike","country":"usa","office":["microsoft","oracle"]} '; $obj=json_decode($json_string); |
現在變數$obj包含了使用PHP解析後的JSON資料,你可以使用以下的方法來輸出和訪問:
| 代碼如下 |
複製代碼 |
echo $obj->name; //displays mike echo $obj->office[0]; //displays microsoft |
你猜的沒錯$obj->office是一個數組,你能夠使用PHP的foreach方法遍曆它:
| 代碼如下 |
複製代碼 |
foreach($obj->office as $val) echo $val; |
ajax時返回JSON格式的資料
原來的資料就是JSON格式
下例來自《鋒利的jQuery
| 代碼如下 |
複製代碼 |
$(function(){ $('#send').click(function() { $.getJSON('test.js', function(data) { $('#resText').empty(); var html = ''; $.each( data , function(commentIndex, comment) { html += '<div class="comment"><h6>' + comment['username'] + ':</h6><p class="para">' + comment['content'] + '</p></div>'; }) $('#resText').html(html); }) }) })
你需要做的就是將資料存放區為格式正確的 .json或者.js 檔案。以下為樣本所傳送的json格式的資料 [ { "username": "張三", "content": "沙發." }, { "username": "李四", "content": "板凳." }, { "username": "王五", "content": "地板." } ]
|
php輸出JSON格式
那麼php如何輸出json格式?php 使用json_encode函數,然後jQuery使用datatype:json 就可以了嘛? 它的輸出如下:
顯然並非所願。還是字串,到底怎麼實現?其實很簡單,只要在php檔案頭部加入以下代碼:
| 代碼如下 |
複製代碼 |
header('Content-type: text/json');
|
這個頭就是告知此檔案輸出類型為 json,這種形式我們見的最多的是驗證碼——php輸出驗證圖片,有時php可以輸出css檔案,js檔案等做一些有趣的事情。好的,我們測試一下吧
| 代碼如下 |
複製代碼 |
<?php header('Content-type: text/json'); $fruits = array ( "fruits" => array("a" => "orange", "b" => "banana", "c" => "apple"), "numbers" => array(1, 2, 3, 4, 5, 6), "holes" => array("first", 5 => "second", "third") ); echo json_encode($fruits); ?> |