関数の概要
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処理の成功判定とエラーハンドリングで欠かせない関数なので、積極的に活用しましょう。
