Zend_Json介紹與應用

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);

                                                 },{

                                                            其餘以此類推

                                                },

                                       ]

 

 若有不對或者不盡如人意的地方,望批評指教!

相關文章
相關標籤/搜索