json_last_error_msg

関数の概要

json_last_error_msg は、PHPでJSONエンコードやデコード処理の直後に発生したエラーの詳細なメッセージを取得するための関数です。JSONの処理中に何か問題が起きた場合に、エラーの原因をわかりやすい文章で返してくれます。これにより、デバッグやエラーハンドリングがしやすくなります。

パラメータの説明

  • なし
    この関数はパラメータを一切受け取りません。常に最後に発生したJSON処理のエラー内容を返します。

戻り値

最後に発生したJSON処理のエラーに対応する日本語または英語のメッセージを文字列で返します。JSON処理が成功している場合は、"No error" というメッセージが返ります。

使用例

基本的な使い方

<?php
$json = '{"name": "John", "age": 30}';
$data = json_decode($json);

if (json_last_error() !== JSON_ERROR_NONE) {
    echo 'エラー: ' . json_last_error_msg();
} else {
    echo 'デコード成功。名前は ' . $data->name;
}
?>

この例では、正しいJSON文字列をデコードしており、エラーは発生しません。成功時は名前を出力します。

無効なJSON文字列の処理

<?php
$invalidJson = '{"name": "John", "age": }';  // ageの値が欠落している
$data = json_decode($invalidJson);

if (json_last_error() !== JSON_ERROR_NONE) {
    echo 'エラー: ' . json_last_error_msg();
}
?>

こちらは不完全なJSON文字列でデコードに失敗します。json_last_error_msg() がエラー内容を教えてくれるので原因の特定が簡単です。

json_encode時のエラー確認

<?php
$data = "xB1x31";
$json = json_encode($data);

if (json_last_error() !== JSON_ERROR_NONE) {
    echo 'json_encode エラー: ' . json_last_error_msg();
} else {
    echo $json;
}
?>

この例では無効なUTF-8文字列をエンコードしようとしたためエラーになります。json_last_error_msg() は適切なエラーメッセージを取得できます。

関連する関数

  • json_encode – PHPのデータをJSON形式の文字列に変換する関数
  • json_decode – JSON文字列をPHPデータに変換する関数
  • json_last_error – 最後のJSON処理に発生したエラーコードを返す関数

まとめ

json_last_error_msg は、JSONのエンコードやデコードで発生したエラーの詳細な説明を取得できる便利な関数です。エラーコードだけでなく人間にわかりやすいメッセージを返してくれるため、デバッグやユーザーメッセージの表示に役立ちます。実務でもJSON処理の成功判定とエラーハンドリングで欠かせない関数なので、積極的に活用しましょう。