PHP中JSON應用

來源:互聯網
上載者:User

      自從PHP5.2開始的這個版本增加了對JSON的支援。主要包含兩個函數:json_encode和json_decode。

      JSON是一種資料的儲存格式,就像PHP序列化後的字串一樣。也是一種資料描述,比如我們將一個數組序列化後存放,就可以很容易的還原序列化後應用。JSON也是如此,只不過他搭建的是用戶端Javascript和服務端PHP的互動橋樑。我們用PHP產生JSON後的字串,然後把這個字串傳給前台Javascript,Javascirpt就可以很容易的將其反JSON然後應用。

    以下是舉例:

有檔案:brand1.json,內容如下,通過觀察就會發現JSON的格式很像數組:

[{"cName":"Intel","id":"1"},{"cName":"AMD","id":"2"}]

 以下是PHP代碼:

 <?php $content = file_get_contents("brand1.json"); $obj = json_decode($content); print_r($obj); echo "<hr>"; for($i = 0; $i < count($obj); $i ++){ echo "cName:".$obj[$i]->cName." id:".$obj[$i]->id."<br/>"; } ?>

      以上代碼通過PHP的檔案操作讀取brand1.json檔案,讀取到的是brand1.json檔案中的字串內容,再通過第3行json_decode將此字串解碼,返回對象為數組對象。print_r($obj)列印的結果如下:

Array ( [0] => stdClass Object ( [cName] => Intel [id] => 1 ) [1] => stdClass Object ( [cName] => AMD [id] => 2 ) )

      通過輸出的結果可以看出的確是數組,brand1.json中的兩個元素分別被產生為兩個stdClass Object對象放在數組中,在程式中輸出對象的值是通過調用對象的屬性來擷取,如:$obj[$i]->cName。還有一種情況,第3行代碼改為:$obj = json_decode($content,true);   可以將取出的JSON對象直接轉變成數組而不是stdClass Object對象,以下是第4行代碼輸出的結果:

Array ( [0] => Array ( [cName] => Intel [id] => 1 ) [1] => Array ( [cName] => AMD [id] => 2 ) )

 

    和上圖對比,會發現儲存於數組中的不再是stdClass Object,而是Array。我們需要注意的是:在取出資料時就要換數組的方式來取值:$obj[$i]['cName'],而不能再用對象訪問屬性的方式來得到資料,如:$obj[$i]->cName,雖然不報錯,但你什麼都取不到。我們倒過來說,如果我們用了第一種方式解析資料,我們就只能用$obj[$i]->cName來訪問資料,如果換成$obj[$i]['cName'],那就會有錯誤資訊等著你了:

 

 Fatal error: Cannot use object of type stdClass as array in D:/wamp/www/cj/data/test.php on line 8

 

 

    錯誤資訊已經把問題描述得很清楚了,僅此而已,在不同的場合選擇合適的方式,沒有其他區別。 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.