php 7.3 以降の場合は 4番目の引数に JSON_THROW_ON_ERROR を渡すと デコードエラーの時にエラーをスローしてくれます
$data = json_decode($json, true, 512, JSON_THROW_ON_ERROR);
日本語をutf-8エンコード(一見文字化けのように見える)したくない場合は必ず JSON_UNESCAPED_UNICODE をつけましょう
$json = json_encode( $array, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT );
if (json_last_error() !== JSON_ERROR_NONE) {
die( "JSON DECODE ERROR in FILE-NAME.json" );
}
$array = json_decode( $json, true );
if (json_last_error() !== JSON_ERROR_NONE) {
die( "JSON DECODE ERROR in FILE-NAME.json" );
}
$json = json_encode( $array );
if (json_last_error() !== JSON_ERROR_NONE) {
die( "JSON DECODE ERROR in FILE-NAME.json" );
}
PHPのバージョンが 5.2より低いphpでjsonを扱うには 「php-json」をインストールします。 (ヘテムルなど大手レンタルサーバ会社のサーバには標準でインストールされています。) (他にも PEARパッケージなどがありますが、phpエクステンションとして提供されているphp-json の方が高速なので、php-json を使用します。)
php --version
PHPのバージョンが 5.2.0 以上の場合、php-json はあらかじめインストールされています。 それより低いバージョンの場合のみ手動でインストールしましょう。
yum install php-json
でOKです。
cp json.so /usr/lib/php/modules/json.so
'/etc/php.d/json.ini' というファイルを下記の内容で作成します。
; Enable json extension module
extension=json.so
apachectl graceful
これでOKです。
php.info(); 関数で確認します。 実行して表示される画面に json の項目とバージョンが正しく表示されていればOK。
これで関数
json_encode();
json_decode()
が使用できるようになります。
$my_array = json_decode($json,true);
json_decode を使用する際は、2つめの引数に true を渡します。 (trueとすると結果が連想配列で帰ってきます。渡さないとオブジェクトで帰ります。)