PHP

[PHP] jsonを扱うときのエラーハンドリング

はじめに

APIを使って外部システムとデータのやり取りをjson形式ですることがあると思います。
他の処理と同様にエラーハンドリングをきちんとして安定したシステム運用を目指しましょう。

エラーハンドリング方法

json_last_error関数を使うことで簡単にエラーハンドリングできます。

sample.php
<?php

// json_encode or json_decode処理

// エラーハンドリング
if (json_last_error() !== JSON_ERROR_NONE) {
    // ハンドリング処理
    ...
}

json_last_error関数がエラーの内容を返してくれます。
この関数はjson_encodeのエラーもjson_decodeのエラーもキャッチしてくれます。
返り値に関してはjson_last_errorのページを参照してください。
PHP7になって定数が追加されていますので、こまめにjsonの定義済み定数を確認するとよいと思います。

サンプル

sample.php
<?php

json_decode('{"one":"one"', true);

// エラーハンドリング
if (json_last_error() !== JSON_ERROR_NONE) {
    // Syntax errorと表示される
    print json_last_error_msg();
}

構文エラーをキャッチする例です。
json_last_error_msg関数を使えばエラーの際のエラーメッセージを取得することができます。
この内容をエラーログに出力するなり、例外を投げるときのメッセージにセットするなりしましょう。

おわりに

簡単ですが以上です。
エラーハンドリングをきちんとして安定したシステム運用を目指しましょう!