PHPでJSONを扱う方法を完全ガイド!初心者向けにjson_encodeとjson_decodeをやさしく解説
生徒
「PHPでデータを保存したり送信したりするのに、JSONっていうのを使うって聞いたんですけど、よくわかりません…」
先生
「JSONは、PHPだけじゃなくて、ほとんどのプログラミング言語で使えるデータの形式なんですよ。とても便利なので覚えておくと役に立ちますよ。」
生徒
「JSONってそもそも何なんですか?どうやってPHPで使うんですか?」
先生
「いい質問ですね!今回は、PHPでJSONを使うためのjson_encodeとjson_decodeについて、やさしく説明しますね。」
1. JSON(ジェイソン)とは?
JSON(ジェイソン)とは、JavaScript Object Notationの略で、データを文字列として表現するためのルールです。
簡単に言うと、「連想配列」や「配列」などのデータを、他の人やプログラムとやり取りするために文字に変えた形だと思ってください。
例えば、次のようなデータがあるとします:
$data = [
"name" => "さくら",
"age" => 20
];
このデータをそのまま別のシステムに送ることは難しいですが、JSONに変換するとこうなります:
{"name":"さくら","age":20}
これなら、どんな言語のプログラムでも簡単に読み取れます。
2. json_encodeの使い方(PHPの配列をJSONに変換)
json_encodeは、PHPの配列やオブジェクトをJSON形式の文字列に変換する関数です。
使い方はとても簡単です。
$data = [
"name" => "たろう",
"age" => 25,
"is_member" => true
];
$json = json_encode($data);
echo $json;
{"name":"たろう","age":25,"is_member":true}
このように、PHPの配列が文字列に変わります。
3. json_decodeの使い方(JSONをPHPの配列に変換)
json_decodeは、JSON文字列をPHPの配列やオブジェクトに変換する関数です。
たとえば、次のように使います:
$json = '{"name":"たろう","age":25,"is_member":true}';
$data = json_decode($json, true);
print_r($data);
Array
(
[name] => たろう
[age] => 25
[is_member] => 1
)
trueを指定すると、「連想配列」として戻ってきます。指定しない場合は「オブジェクト」として戻ってきます。
4. JSONはなぜ便利なの?
JSONは次のような場面でよく使われます:
- Web APIとの通信:サーバーとデータのやり取りをするとき
- データの保存:設定ファイルとして使う場合
- JavaScriptとの連携:フロントエンドとバックエンドのやり取り
特にPHPとJavaScriptの間でデータを受け渡しするとき、JSONがあるととてもスムーズです。
5. よくある使い方:フォームデータをJSONにして保存
たとえば、アンケートフォームで受け取った情報をまとめてJSONとして保存するケースです。
$form_data = [
"q1" => "はい",
"q2" => "いいえ",
"q3" => "わからない"
];
$json = json_encode($form_data, JSON_UNESCAPED_UNICODE);
file_put_contents("answers.json", $json);
JSON_UNESCAPED_UNICODEを指定すると、日本語が「\u305f」などにならず、そのままの形で保存されます。
6. JSONデータの読み込みと表示
保存されたJSONファイルを読み込んで、PHPで表示することもできます。
$json = file_get_contents("answers.json");
$data = json_decode($json, true);
foreach ($data as $key => $value) {
echo $key . "の答え:" . $value . "<br>";
}
JSONを使うと、保存や読み込みも簡単にできます。
7. JSONエンコード・デコード時の注意点
1. JSONにできるのは基本的な型だけ
json_encodeは、配列・連想配列・数字・文字列・true/false/null などしか扱えません。関数や特殊な型はエラーになります。
2. 文字コードはUTF-8で
文字化けを防ぐためにも、PHPの文字列はUTF-8にしておきましょう。
3. 第二引数を忘れずに
json_decodeで連想配列にしたいときはtrueを忘れずに!
まとめ
PHPでJSONを扱うスキルは、現代のWeb開発において欠かせない基本知識のひとつです。とくにjson_encodeとjson_decodeの2つの関数は、配列や連想配列などのPHPのデータ構造を、JavaScriptをはじめとする他の言語や外部サービスとやりとりするための「共通の言葉」として変換するために使われます。
json_encodeを使えば、PHPのデータを文字列に変換して保存したり、外部のAPIに送信したりすることができます。一方、json_decodeは、JSON文字列を再びPHPの配列やオブジェクトに戻すために使われます。この2つを使いこなせば、データの送受信や保存がぐっと簡単になります。
また、json_decodeの第2引数にtrueを渡すことで、戻り値を「連想配列」にできるのも非常に便利です。オブジェクト型よりも配列の方が扱いやすいという方も多いため、初心者のうちはこのオプションを忘れずに使うのがポイントです。
データを保存する場合は、file_put_contentsと組み合わせることで、ユーザーの入力結果や設定などをシンプルに保存できます。読み込みもfile_get_contentsで簡単に行えます。JSONファイルを使えば、データベースを使わなくてもちょっとした情報の保存ができるため、個人開発や軽量なシステムにもぴったりです。
■JSONを扱う基本のサンプルコードまとめ
<?php
// 配列をJSON形式に変換して保存
$data = [
"name" => "ゆき",
"score" => 88,
"passed" => true
];
$json = json_encode($data, JSON_UNESCAPED_UNICODE);
file_put_contents("student.json", $json);
// 保存したJSONを読み込んで配列として展開
$json_read = file_get_contents("student.json");
$array = json_decode($json_read, true);
// 表示処理
foreach ($array as $key => $value) {
echo $key . ":" . $value . "<br>";
}
?>
このように、PHPでJSONを扱うことは、Webアプリケーション開発において非常に実用的です。APIとの連携やフォームデータの保存、JavaScriptとのやりとりなど、実務でもさまざまな場面で使われています。
最初は文字列に見えてややこしく感じるかもしれませんが、「JSONはデータを文字にしただけ」と覚えると、すんなり理解できるでしょう。実際の開発ではJSON形式で通信するケースが増えているため、今回学んだjson_encodeとjson_decodeはしっかり使いこなせるようにしておきましょう。
生徒
「先生、PHPでJSONを使うって、最初は難しそうでしたけど、文字に変換して保存するだけって思ったらちょっとわかってきました!」
先生
「その調子です。JSONはシンプルなルールに基づいたデータ形式だから、PHPでも簡単に使えるんです。json_encodeとjson_decodeさえ押さえておけば、いろんなデータ処理ができるようになりますよ。」
生徒
「連想配列をjson_encodeで文字列にして保存して、json_decodeでまた配列に戻せるってすごく便利ですね。JSONって、他の言語でも使えるんですよね?」
先生
「そうです。JavaScriptはもちろん、PythonやJavaなど、ほとんどの言語でJSONは扱えます。だからWeb APIを使うときやJavaScriptとPHPを連携させるときに、JSONはとても役に立つんです。」
生徒
「JSONのファイル読み書きもできるから、ちょっとした設定やデータ保存にも使えるっていうのが良いですね。これからいろいろ試してみたいです!」
先生
「素晴らしい姿勢です。まずは小さなデータから扱って、徐々に応用していけば、きっとJSONの扱いが自然と身につきますよ。」