Zend_Json介紹與應用php
1、Zend_Json介紹web
Zend_Json
提供一個方便的方式來串聯(native的)PHP(的變量)和JSON,並將JSON(對象)解碼到PHP中。 關於JSON的更多信息, 請參考 JSON 項目網站。json
JSON, JavaScript Object Notation, 能夠被應用於JS和其餘語言的輕量級數據交換。 由於JSON(對象)能夠直接被Javascript執行,對於web2.0接口來講,它是一種理想的格式;它是使用XML做爲AJAX接口的一個更簡單的替換方案。數組
另外,Zend_Json
提供把字符串從任意的 XML 格式轉換到 JSON 格式。這個內置的功能使 PHP 開發者可以在把企業數據發送到基於瀏覽器的 Ajax客戶程序以前把它(企業數據)從 XML 格式轉換到 JSON 格式。它提供了簡便的方法在服務器端作動態數據轉換,於是避免了在瀏覽器端進行沒必要要的 XML 解析。瀏覽器
2、Zend_Json應用服務器
1.分隔符網站
分隔符 意義ui
{ } 用於實現對象的包含,對象都包含在大括號內spa
, 逗號用於分割對象的不一樣屬性,或者數組的元素code
[ ] 用於存放數組,數組將存放在中括號中
: 用於表示鍵/值對的值,冒號前爲鍵,冒號後邊就是該鍵的值
2.基本方法
2.1 普通數組 轉化成 json $json=Zend_Json::encode($array);
2.2. json 轉化成 普通數組 $array=Zend_Json::decode($json);
2.3 json 轉化成 對象類型 $stdClass=Zend_Json::decode($json,Zend_Json::TYPE_OBJECT);
2.4 XML 轉化成 json $json=Zend_Json::fromXml($xml)
3. 示例
3.1 將普通數組轉化爲json
示例代碼以下:
require_once 'Zend/Json.php'; $temp=array( "a" => 0, "b" => 1, "c" =>array( "c-1" => 21, "c-2" => 22, "c-3" => 23 ), "d" => 3 ); $json=Zend_Json::encode($temp); echo "臨時數組內容爲: "; print_r($temp); echo "<br/>"; echo "轉換爲json格式內容爲:"; print_r($json);
輸出結果爲:
臨時數組內容爲: Array ( [a] => 0 [b] => 1 [c] => Array ( [c-1] => 21 [c-2] => 22 [c-3] => 23 ) [d] => 3 [e] => 4 )
轉換爲json格式內容爲:{"a":0,"b":1,"c":{"c-1":21,"c-2":22,"c-3":23},"d":3,"e":4}
3.2 將json轉化爲普通數組
示例代碼以下:
require_once 'Zend/Json.php'; $json='{"a":0,"b":1,"c":{"c-1":21,"c-2":22,"c-3":23},"d":3,"e":4}'; $temp=Zend_Json::decode($json); echo "臨時json內容爲:"; print_r($json); echo "<br/>"; echo "轉換爲普通數組格式內容爲:"; print_r($temp);
結果爲:
臨時json內容爲: {"a":0,"b":1,"c":{"c-1":21,"c-2":22,"c-3":23},"d":3,"e":4}
轉換爲普通數組格式內容爲:Array ( [a] => 0 [b] => 1 [c] => Array ( [c-1] => 21 [c-2] => 22 [c-3] => 23 ) [d] => 3 [e] => 4 )
3.3 將json轉化爲對象
承接上述例子,在示例代碼中輸入如下代碼:
echo "<br/>輸出將json解碼後的對象爲 :"; $vative=Zend_Json::decode($json,Zend_Json::TYPE_OBJECT); print_r($vative);
輸出結果爲:
輸出將json解碼後的對象爲:stdClass Object ( [a] => 0 [b] => 1 [c] => stdClass Object ( [c-1] => 21 [c-2] => 22 [c-3] => 23 ) [d] => 3 [e] => 4 );
3.4 xml轉化爲json(源自:zend_framework手冊)
xml代碼以下:
<?xml version="1.0" encoding="UTF-8"?> <books> <book id="1"> <title>Code Generation in Action</title> <author><first>Jack</first><last>Herrington</last></author> <publisher>Manning</publisher> </book> <book id="2"> <title>PHP Hacks</title> <author><first>Jack</first><last>Herrington</last></author> <publisher>O'Reilly</publisher> </book> <book id="3"> <title>Podcasting Hacks</title> <author><first>Jack</first><last>Herrington</last></author> <publisher>O'Reilly</publisher> </book> </books>
轉化爲json,代碼以下:
{ "books" : { "book" : [ { "@attributes" : { "id" : "1" }, "title" : "Code Generation in Action", "author" : { "first" : "Jack", "last" : "Herrington" }, "publisher" : "Manning" }, { "@attributes" : { "id" : "2" }, "title" : "PHP Hacks", "author" : { "first" : "Jack", "last" : "Herrington" }, "publisher" : "O'Reilly" }, { "@attributes" : { "id" : "3" }, "title" : "Podcasting Hacks", "author" : { "first" : "Jack", "last" : "Herrington" }, "publisher" : "O'Reilly" } ] } } ?>
1. 對xml解析時,將屬性同一放在「@attriutes」下,如
xml代碼: <book id="2" name="sw" ...> .. </book>
解析後 json代碼: "book" : {
"@attributes" : {
"id"=>"2", "name"=>"sw", more(更多屬性)
},
.......
},
2. 若是名稱相同,則歸爲一個數組,如上例:
xml代碼: <book id="1"> ... </book>
<book id="2" > .... </book>
解析後json代碼:(book是個數組形式)
「book" : [
{
這裏是第一個book(id=1);
},{
這裏是第二個book(id=2);
},{
其餘以此類推
},
]
若有不對或者不盡如人意的地方,望批評指教!