「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > PHP の「json_decode()」を使用して不正な JSON データを効果的に処理するにはどうすればよいですか?

PHP の「json_decode()」を使用して不正な JSON データを効果的に処理するにはどうすればよいですか?

2024 年 11 月 25 日に公開
ブラウズ:910

How Can I Effectively Handle Bad JSON Data with PHP\'s `json_decode()`?

PHP の json_decode() を使用した不正な JSON データの処理

json_decode() を使用して JSON データを処理する場合、無効なデータを処理することが重要です効果的に。提供されたスクリプトは、{ bar: "baz" } のような文字列の不正な JSON を検出できますが、「無効なデータ」などの非文字列データを処理できません。

json_decode()

この問題に対処するには、json_decode():

  • を理解することが不可欠です。エラーの場合は、デコードされたデータまたは null を返します。
  • JSON 文字列に null が含まれている場合は、null を返すこともできます。
  • エラーに対して警告が生成されます。

@ 演算子を使用した警告の抑制

警告を抑制するには、@ 演算子を使用するオプションがあります。 Operator:

$data = @json_decode($_POST);

このアプローチでは警告が表示されなくなりますが、エラーと null 値を処理するために追加のチェックが必要です:

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 解析エラーを処理します。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3