PHPのJSONエンコード / デコードとは?配列やオブジェクトをJSON形式で扱う方法
JSON(JavaScript Object Notation)は、データの受け渡しや保存によく使われる軽量なデータフォーマットです。
PHPでは json_encode()
で配列やオブジェクトをJSON文字列に変換し、json_decode()
で逆にJSON文字列を配列やオブジェクトに変換できます。
json_encode():配列 → JSON文字列
例:
$data = [
"name" => "山田太郎",
"age" => 30,
"email" => "taro@example.com"
];
$json = json_encode($data);
echo $json;
出力結果:
{"name":"山田太郎","age":30,"email":"taro@example.com"}
文字化け防止の設定
$json = json_encode($data, JSON_UNESCAPED_UNICODE);
→ 日本語をエスケープせず、そのまま表示できます。
json_decode():JSON文字列 → 配列 / オブジェクト
例:
$json = '{"name":"山田太郎","age":30}';
$array = json_decode($json, true); // 連想配列として取得
$object = json_decode($json); // オブジェクトとして取得
アクセス方法:
echo $array["name"]; // 山田太郎
echo $object->age; // 30
オプション例(json_encode)
JSON_PRETTY_PRINT
:整形された見やすい形式に
JSON_UNESCAPED_UNICODE
:日本語のエスケープを防ぐ
JSON_UNESCAPED_SLASHES
:スラッシュのエスケープを防ぐ
例:
echo json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
エラーハンドリング
json_decode や json_encode に失敗した場合は、json_last_error()
で原因を確認できます。
$data = json_decode("不正なJSON", true);
if (json_last_error() !== JSON_ERROR_NONE) {
echo "JSONエラー:" . json_last_error_msg();
}
まとめ
json_encode()
:配列やオブジェクトをJSON文字列に変換
json_decode()
:JSON文字列を配列またはオブジェクトに変換
JSON_UNESCAPED_UNICODE
で日本語の文字化け防止
- オプションを使って整形や制御が可能
json_last_error_msg()
でデコード失敗時のエラー確認
PHPで外部APIとやり取りしたり、JavaScriptとの連携をする場合、JSON形式の理解と操作は非常に重要です。
実際にエンコード/デコードを使いながら慣れていきましょう。