在前端開發中,常常需要將數據格式化為 JSON 格式,而在 PHP 中可以通過 json_encode 和 json_decode 函數來進行 JSON 字符串的編碼和解碼。在 PHP 面試中,經常會問到與 JSON 相關的問題,今天就來一起學習一下 PHP JSON 面試題。
1. 如何將數組轉換為 JSON 格式?
$arr = array("name" =>"Tom", "age" =>18, "gender" =>"Male"); $json = json_encode($arr); echo $json; // {"name":"Tom","age":18,"gender":"Male"}
2. 如何將 JSON 格式字符串轉換為數組?
$json = '{"name":"Tom","age":18,"gender":"Male"}'; $arr = json_decode($json, true); print_r($arr); // Array ( [name] =>Tom [age] =>18 [gender] =>Male )
3. 如何處理 JSON 編碼時出現的錯誤?
$arr = array("name" =>"Tom", "age" =>18, "gender" =>"Male"); $json = json_encode($arr, JSON_HEX_TAG | JSON_HEX_APOS | JSON_HEX_QUOT | JSON_HEX_AMP); if ($json === false) { die("JSON encoding error: " . json_last_error_msg()); } echo $json; // {"name":"Tom","age":18,"gender":"Male"}
4. 如何處理 JSON 解碼時出現的錯誤?
$json = '{"name":"Tom","age":18,"gender":"Male'; $arr = json_decode($json, true); if ($arr === null) { die("JSON decoding error: " . json_last_error_msg()); } print_r($arr); // 輸出 null,并且打印錯誤信息
5. 如何在 JSON 編碼中使用 UTF-8 編碼?
$arr = array("中文" =>"漢字"); $json = json_encode($arr, JSON_UNESCAPED_UNICODE); echo $json; // {"\u4e2d\u6587":"\u6c49\u5b57"}
6. 如何在 JSON 解碼中處理中文字符?
$json = '{"\u4e2d\u6587":"\u6c49\u5b57"}'; $arr = json_decode($json, true); $chinese = $arr["中文"]; echo $chinese; // 漢字
7. 如何格式化 JSON 字符串?
$json = '{"name":"Tom","age":18,"gender":"Male"}'; $json_pretty = json_encode(json_decode($json), JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT); echo $json_pretty; /** * 輸出結果: * { * "name": "Tom", * "age": 18, * "gender": "Male" * } */
8. 如何在 JSON 編碼時將數值格式化為字符串?
$arr = array("count" =>10000); $json = json_encode($arr, JSON_NUMERIC_CHECK); echo $json; // {"count":"10000"}
9. 如何在 JSON 編碼時保留空字符串?
$arr = array("name" =>"", "age" =>18); $json = json_encode($arr, JSON_UNESCAPED_UNICODE | JSON_FORCE_OBJECT); echo $json; // {"name":"","age":18}
10. 如何在 JSON 解碼時獲取解碼后的原始數據類型?
$json = '{"name":"Tom","age":18,"gender":"Male","scores":[100, 90, 80]}'; $arr = json_decode($json, true, 512, JSON_BIGINT_AS_STRING); var_dump($arr); /** * 輸出結果: * array(4) { * ["name"]=>string(3) "Tom" * ["age"]=>int(18) * ["gender"]=>string(4) "Male" * ["scores"]=>array(3) { * [0]=>string(3) "100" * [1]=>string(2) "90" * [2]=>string(2) "80" * } * } */
總結:
以上就是關于 PHP JSON 面試題的總結,掌握了這些基本知識以后,我們就可以在開發中輕松處理 JSON 數據。需要注意的是,在將 JSON 字符串轉換為數組時,一定要檢查解碼后的結果是否為 null,以避免出現未知錯誤。同時,我們也可以根據實際需求,使用不同的 JSON 編碼選項來進行特定格式的編碼。上一篇css不對稱弧度