[PHP] json_encode、json_decode 関数で発生したエラーを検出する
作成日: 2020年03月07日
json_last_error
関数を使用すると、直前の json_encode
、json_decode
関数でエラーが発生したかどうかを判定することができます。
<?php
// ダブルクオーテーションが 1 つ不足している
// 不正な JSON 文字列を json_decode 関数に渡す。
$raw_json = '{"name":"Taro}';
$user = json_decode($raw_json);
if(json_last_error() !== JSON_ERROR_NONE) {
echo 'Failed to decode json.';
}
もし json_decode
関数の実行時にエラーが置きた場合、json_last_error
関数はエラーを表す int 型の数値を返します。何もエラーが無かった場合、JSON_ERROR_NONE
に対応する数値が返されます。エラーが置きたときにどんな数値が返されるかは PHPマニュアル で確認することができます。上記の例では、何らかのエラーが検出された場合に Failed to decode json.
という文字列を出力します。
実行結果は下記となります。
Failed to decode json.