[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.