JSON

JSON和PHP

JSON和PHP

在本節中,我們將了解如何使用PHP處理JSON。我們可以使用PHP編程語言對JSON對象進行編碼和解碼。如果您使用PHP 5.2.0,那麼JSON擴展將打包並編譯成PHP。JSON通常用於從web服務器讀取數據並在web頁麵中顯示數據。讓我們看看如何在客戶機和PHP服務器之間實現這一點。但在此之前,我們簡要回顧了PHP中與json相關的3個最常見的函數。

  1. json_encode()函數返回值的JSON表示。
  2. json_decode()用於解碼JSON字符串。
  3. 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而且選項指的是UTF-8編碼數據類型的編碼字符串。是一個布爾類型參數,用於將返回的對象設置為關聯數組(當assoc為True時)。是指指定遞歸深度的整數類型參數。最後,引用JSON解碼的整數類型位掩碼(支持JSON_BIGINT_AS_STRING)。讓我們看看這個函數的實際情況

<?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"}錯誤:語法錯誤

Baidu
map