2017-9-18
[PHP] json_encode/decodeはエラーが起きても例外を投げない
以下のように記載されている。
エンコードに失敗した場合は、json_last_error() を使ってエラーの内容を調べることができます。
デコードに失敗した場合は、json_last_error() を使用すればエラーの正確な状態を知ることができます。
json のシンタックスがおかしい等の場合でも例外を投げず、json_encode なら false、json_decode なら NULL を返却するのみで不具合を検出し辛い。
そのため、以下のようにクラスを作成してエラー内容と共に例外を投げるようにした。
class JSON
{
public static function decode($json)
{
$result = json_decode($json);
if ($result === NULL)
{
throw new \Exception(json_last_error_msg());
}
return $result;
}
public static function encode($array)
{
$result = json_encode($array);
if ($result === false)
{
throw new \Exception(json_last_error_msg());
}
return $result;
}
}