PHPプログラムに関する各種メモ書き

phpでjsonを扱う / json_decode() / json_encode()

php 7.3 以降の場合は 4番目の引数に JSON_THROW_ON_ERROR を渡すと デコードエラーの時にエラーをスローしてくれます

$data = json_decode($json, true, 512, JSON_THROW_ON_ERROR);

● 読みやすい形でphpの配列をjsonに変換する(エンコード)

日本語を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" );
}

● jsonデータをphpの配列にする(デコード)

$array = json_decode( $json, true );
if (json_last_error() !== JSON_ERROR_NONE) {
    die( "JSON DECODE ERROR in FILE-NAME.json" );
}

● phpの配列をjson形式にする(エンコード)

$json = json_encode( $array );
if (json_last_error() !== JSON_ERROR_NONE) {
    die( "JSON DECODE ERROR in FILE-NAME.json" );
}

● php5.2より低いバージョンでjsonを扱う 「php-jsonのインストール」

PHPのバージョンが 5.2より低いphpでjsonを扱うには 「php-json」をインストールします。 (ヘテムルなど大手レンタルサーバ会社のサーバには標準でインストールされています。) (他にも PEARパッケージなどがありますが、phpエクステンションとして提供されているphp-json の方が高速なので、php-json を使用します。)

1. phpバージョンの確認

php --version

PHPのバージョンが 5.2.0 以上の場合、php-json はあらかじめインストールされています。 それより低いバージョンの場合のみ手動でインストールしましょう。

2. json-phpのインストール

yum install php-json

でOKです。

4. json.soを指定のディレクトリ(/usr/lib/php/modules/)に移動

cp json.so /usr/lib/php/modules/json.so

5. /etc/php.d/json.ini ファイルの作成

'/etc/php.d/json.ini' というファイルを下記の内容で作成します。

   ; Enable json extension module
    extension=json.so

6. apacheの再起動

    apachectl graceful

これでOKです。

7. 確認

php.info(); 関数で確認します。 実行して表示される画面に json の項目とバージョンが正しく表示されていればOK。

8. json関数の使用。

これで関数

json_encode();
json_decode()

が使用できるようになります。

9 json関数使用の注意

$my_array = json_decode($json,true);

json_decode を使用する際は、2つめの引数に true を渡します。 (trueとすると結果が連想配列で帰ってきます。渡さないとオブジェクトで帰ります。)

No.500
02/27 11:44

edit