json數據是我們實時交互時一些常用的文件,他可以利用php動態生成并由js或php接受進行相關處理,下面我來給各位同學介紹JSON數據的創建和解析,有需要了解的同學可參考.
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').emptyempty();
- 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);
- ?>
新聞熱點
疑難解答