1. 本記事のポイント
- PHPでJSONファイルを読み書きする基本処理を解説
json_encode
/json_decode
の正しい使い方と注意点を紹介- ファイル入出力と組み合わせた実務での典型パターンを網羅
2. PHPにおけるJSONファイルの読み込みと出力とは?
PHPは標準関数として json_encode
および json_decode
を提供しており、JSON形式のデータを簡単に扱うことができます。JSONはデータ交換フォーマットとして広く利用されており、PHPではAPI通信・設定ファイル・データの保存など、さまざまな場面で活用されています。
特にWeb開発では、外部システムとの連携やフロントエンドとのデータ受け渡しの中継にJSONを用いることが一般的です。また、PHPは連想配列との親和性が高く、json_decode
で取得したデータをそのまま配列として操作できる点も特徴です。
本記事では、JSON文字列とPHP配列の相互変換、ファイルとの連携、エラー処理までを一通り解説します。
3. 詳細解説
JSON文字列からPHPの配列/オブジェクトに変換(json_decode
)
外部から受け取ったJSON文字列を配列として扱いたい場合に使用します。
<?php
$json = '{"name":"Taro","age":20}';
$data = json_decode($json, true); // 第2引数にtrueを指定すると連想配列で返る
print_r($data);
出力結果:
Array
(
[name] => Taro
[age] => 20
)
第2引数を省略またはfalseにすると、stdClassオブジェクトとして返されます。
<?php
$obj = json_decode($json);
echo $obj->name; // "Taro"
PHPの配列/オブジェクトをJSON文字列に変換(json_encode
)
データをJSON形式で保存したり、JavaScript側に渡す際に使用します。
<?php
$data = ["name" => "Hanako", "age" => 25];
$json = json_encode($data);
echo $json;
出力結果:
{"name":"Hanako","age":25}
JSONファイルを読み込む
ファイルから直接JSONを読み込んで配列に変換するには、file_get_contents
と json_decode
を組み合わせます。
<?php
$json = file_get_contents('data.json');
$data = json_decode($json, true);
この方法はローカル設定ファイルやキャッシュデータなどの読み込みに使われます。
配列をJSONファイルに保存する
JSON形式で保存するには json_encode
した文字列を file_put_contents
で書き込みます。
<?php
$data = ["status" => "ok", "timestamp" => time()];
file_put_contents('result.json', json_encode($data, JSON_PRETTY_PRINT));
JSON_PRETTY_PRINT
を付けることで整形された出力になります。
4. よくあるミス・誤解・落とし穴
json_decode
の第2引数を忘れると、連想配列ではなくオブジェクトとして返るため注意が必要です。json_encode
に特殊文字(日本語・制御文字など)を含むと、エスケープされて読みにくくなることがあります。その場合はJSON_UNESCAPED_UNICODE
を付けます。
json_encode($data, JSON_UNESCAPED_UNICODE);
- JSONファイルの読み書き時に文字コード(UTF-8)でないと処理に失敗することがあります。特にWindows環境では注意が必要です。
- エンコード・デコードに失敗した場合は
json_last_error()
でエラー内容を確認できます。
5. まとめ
PHPでは json_encode
/ json_decode
を用いることで、JSONデータとの相互変換が簡単に行えます。ファイル操作関数と組み合わせることで、設定ファイルの読み書きやキャッシュ管理など、実務でも頻出する処理が構築可能です。
ただし、文字コードや引数の指定などで想定外の挙動になることもあるため、常に出力とエラー確認を意識した実装が重要です。