在PHP 中使用json_decode() 處理錯誤的JSON 資料
使用json_decode() 處理JSON 資料時,處理無效資料至關閉時,處理無效資料至關重要有效地。雖然提供的腳本可以檢測到諸如 { bar: "baz" } 之類的字串的錯誤 JSON,但它無法處理諸如“無效資料”之類的非字串資料。
理解json_decode()
要解決這個問題,有必要了解json_decode():
使用 @ 運算子抑制警告
抑制警告,一種選擇是使用 @運算符:
$data = @json_decode($_POST);
這種方法可以消除警告,但需要額外的檢查來處理錯誤和空值:
if ($data === null && json_last_error() !== JSON_ERROR_NONE) { echo "Incorrect data"; }
自訂錯誤處理
另一個選項是建立自訂錯誤處理腳本:
function handle_json_error() { $error = json_last_error(); switch ($error) { case JSON_ERROR_NONE: return true; case JSON_ERROR_DEPTH: echo "Maximum depth exceeded"; break; 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"; } return false; } if (!handle_json_error()) { echo "Bad JSON data!"; }
此腳本提供詳細的錯誤訊息並處理各種JSON 解析錯誤。
以上是如何使用 PHP 的 json_decode() 有效處理錯誤的 JSON 資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!