在本節中,我們將了解如何使用PHP處理JSON。我們可以使用PHP編程語言對JSON對象進行編碼和解碼。如果您使用PHP 5.2.0,那麼JSON擴展將打包並編譯成PHP。JSON通常用於從web服務器讀取數據並在web頁麵中顯示數據。讓我們看看如何在客戶機和PHP服務器之間實現這一點。但在此之前,我們簡要回顧了PHP中與json相關的3個最常見的函數。
- json_encode()函數返回值的JSON表示。
- json_decode()用於解碼JSON字符串。
- json_last_error()用於獲取最近發生的錯誤。
讓我們看看這些函數從json_encode開始的用法。json_encode()在PHP中對JSON進行編碼,成功時返回值的JSON表示,失敗時返回FALSE。它的語法是
字符串json_encode ($value [, $options = 0])
它的參數是價值而且選項.<值>指的是正在編碼的實際值。您需要傳遞UTF-8編碼的數據,因為任何其他編碼都不起作用。<選項>是位掩碼,由JSON_HEX_QUOT、JSON_HEX_TAG、JSON_HEX_AMP、JSON_HEX_APOS、JSON_NUMERIC_CHECK、JSON_PRETTY_PRINT、JSON_UNESCAPED_SLASHES、JSON_FORCE_OBJECT組成。
下麵的代碼使用json_encode()顯示員工記錄。
<?php $myObj = new employeeClass();$myObj->fname = "Rita";$myObj->lname = "Gupta";$myObj->年齡= 30;$myObj->employeecode = 5527104;$myJSON = json_encode($myObj);echo $ myJSON;? >
此代碼片段的輸出如下:
{“幀”:“麗塔”、“lname”:“Gupta”,“年齡”:30日employeecode: 5527104}
與單例變量一樣,我們可以使用PHP函數json_encode()將PHP數組轉換為JSON。見下文:
<?php $myVehiclesArr =數組(“自行車”,“騎手”,“摩托車”,“汽車”);$myVehicleJSON = json_encode($myVehiclesArr);echo $ myVehicleJSON;? >
其輸出如下所示:
(自行車”、“騎士”、“摩托車”、“汽車”)
接下來,我們轉向PHPjson_decode ().這個函數解碼JSON,並將從JSON解碼的值返回到適當的PHP類型。其語法如下:
Mixed json_decode ($json [,$assoc = false [,$ depth = 512 [,$ options = 0]])
它的參數是Json_string, assoc, depth而且選項.
<?php json美元= '{“印度”:“嗨”、“美國”:“en - us”,“英國”:“en”、“中華人民共和國”:“zh型”,“法國”:“fr”}';var_dump (json_decode (json)美元);var_dump (json_decode()美元json,真的));? >
您將得到以下輸出
object(stdClass)#1(5){["印度"]=> string(2)"hi" ["USA"]=> string(5)"en-us" ["UK"]=> string(5)"en-gb"["人民共和國"]=> string(2)"zh" ["France"]=> string(2)"fr"}數組(5){["印度"]=>字符串(2)"hi" ["USA"]=> string(5)"en-us" ["UK"]=> string(5)"en-gb"["人民共和國"]=> string(2)"zh" ["France"]=> string(2) "fr" }
PHP json_last_error ()函數返回最後發生的錯誤。讓我們看一個例子。這個例子試圖解碼一個有語法錯誤的JSON字符串(鍵性別沒有寫成字符串)。因此json_last_error()將返回JSON_ERROR_SYNTAX。
<?php //一個語法錯誤的json字符串$string = '{"name":"Nikhil", "age":37,性別:"Male"}';echo“解碼:”。美元的字符串;json_decode ($ string);echo "
Error: ";switch (json_last_error()) {case JSON_ERROR_NONE: echo "No errors";打破;case JSON_ERROR_DEPTH: echo "最大堆棧深度超出";打破; case JSON_ERROR_STATE_MISMATCH: echo "Invalid or malformed JSON"; break; case JSON_ERROR_CTRL_CHAR: echo "Control character error"; break; case JSON_ERROR_SYNTAX: echo "Syntax error"; break; case JSON_ERROR_UTF8: echo "Malformed UTF-8 characters"; break; default: echo "Unknown error"; break; } ?>
查看下麵的輸出
解碼:{"name":"Nikhil", "age":37,性別:"Male"}錯誤:語法錯誤