PHPで配列をJSON形式に変換する方法!初心者でもわかるjson_encodeとjson_decodeの使い方
生徒
「PHPで配列をウェブで使うJSONっていう形式に変換できるって聞いたんですが、どうやるんですか?」
先生
「PHPではjson_encodeという関数を使えば、配列をJSON形式の文字列に変換できますよ。逆に、JSONから配列に戻すにはjson_decodeを使います。」
生徒
「そのJSONってなんですか?初めて聞きました…」
先生
「JSONは“ジェイソン”と読みます。データをテキストでやりとりするための形式で、今どきのアプリやウェブサービスでよく使われています。実際の使い方を見ていきましょう!」
1. JSON形式とは?初心者でもわかるデータの仕組み
JSON(ジェイソン)は、JavaScript Object Notationの略称で、プログラミング言語を問わず「データをやり取りするための共通ルール」として世界中で使われているテキスト形式です。
最大の特徴は、「人間がパッと見ても内容が理解しやすく、コンピュータにとっても処理が非常に速い」という点にあります。もともとはJavaScriptから生まれた形式ですが、現在ではPHP、Python、Rubyなど、ほぼすべての言語で標準的なデータ交換フォーマットとして採用されています。
身近な例え:
JSONは、いわば「海外の人ともやり取りできる世界共通のレシート」のようなものです。品名(キー)と価格(値)がセットになっていて、誰が見ても何が書いてあるか分かりますよね。
JSONの書き方は非常にシンプルです。基本的には{ }(波括弧)の中に、「名前(キー)」と「値」をセットにして記述します。
{
"name": "たろう",
"age": 20,
"is_student": true,
"hobbies": ["読書", "旅行"]
}
このように、名前、年齢といった単一のデータだけでなく、数値や「はい/いいえ(真偽値)」、さらに複数のデータをまとめたリスト(配列)まで、複雑な情報もスッキリと1つのテキストにまとめることができます。
この「共通の形」があるおかげで、PHPで作られたサーバーから、ユーザーが使っているスマートフォンのアプリへスムーズに情報を届けることができるのです。
2. PHPの配列をJSONに変換する(json_encode)
PHPで配列をJSON形式に変換するには、json_encodeという関数を使います。
たとえば以下のように配列を用意して、それをJSONに変換することができます。
$data = [
"name" => "たろう",
"age" => 20,
"gender" => "male"
];
$json = json_encode($data);
echo $json;
このコードを実行すると、以下のような出力になります。
{"name":"たろう","age":20,"gender":"male"}
json_encodeは、配列を文字列に変換する関数で、ウェブ上でAPIやJavaScriptにデータを渡すときによく使われます。
3. JSON文字列を配列に戻す(json_decode)
逆に、JSON形式の文字列をPHPの配列に戻すには、json_decodeを使います。
この関数は、文字列を解析して配列に変換してくれます。
$json = '{"name":"たろう","age":20,"gender":"male"}';
$data = json_decode($json, true);
print_r($data);
trueをつけることで、連想配列として取得できます。
実行結果は次の通りです。
Array
(
[name] => たろう
[age] => 20
[gender] => male
)
このように、JSON形式からPHPの配列に戻すことができます。
4. JSON変換を使うシーン
PHPでJSONを使う場面はたくさんあります。たとえば、次のような場面です。
- JavaScriptとのデータ連携(画面更新など)
- 外部のAPIから情報を受け取るとき
- Ajax通信でデータの送受信をするとき
- データベースに複雑な構造のデータを保存したいとき
たとえば、天気予報やニュースを外部サービスから取り込む場合、そのデータはJSONで送られてきます。json_decodeで配列にすれば、PHPで簡単に扱えます。
5. JSONを扱う上での注意点
JSONを扱うときは、次の点に注意しましょう。
- 日本語が文字化けする場合:
JSON_UNESCAPED_UNICODEというオプションを使うと解決します。 - 循環参照がある配列はエラーになります。
- 文字列が正しくないと
json_decodeは失敗します。
日本語の出力をきれいにする例:
$data = ["message" => "こんにちは"];
echo json_encode($data, JSON_UNESCAPED_UNICODE);
これで「\u3053\u3093…」のような表示ではなく、「こんにちは」とそのまま表示されます。
6. ネストした配列もJSONに変換できる
多次元配列(配列の中に配列がある構造)も、そのままjson_encodeで変換できます。
$data = [
"user" => [
"name" => "たろう",
"age" => 20
],
"status" => "active"
];
echo json_encode($data, JSON_UNESCAPED_UNICODE);
出力結果:
{"user":{"name":"たろう","age":20},"status":"active"}
JSON形式は階層構造も表現できるので、情報をまとめて送るのにとても便利です。
まとめ
PHPで配列とJSON形式の変換を行う方法は、モダンなWeb開発では欠かせない基本スキルです。この記事では、json_encode関数を使ってPHPの配列をJSON文字列に変換する方法、そしてjson_decode関数を使ってJSON文字列をPHPの配列に戻す方法を丁寧に解説しました。特に、配列の中に配列が入っている「多次元配列」でも対応できる点や、日本語の文字化けを防ぐためにJSON_UNESCAPED_UNICODEオプションを使うテクニックなど、実務でも役立つポイントを押さえました。
JSONはJavaScriptとの連携だけでなく、外部APIとの通信、Ajaxの非同期処理、データベースへの構造的データ保存など、PHPを使ったWebアプリケーション開発のあらゆる場面で使われています。そのため、配列からJSONへの変換、JSONから配列への変換という基本操作をしっかりと理解しておくことが大切です。
また、json_decodeを使うときは第2引数にtrueを渡すことで「連想配列」として扱えるようになります。この点は、オブジェクトとして返る仕様と区別して覚えておきましょう。
実務でもよく使うJSON変換のサンプルコード
ここでもう一度、基本となる書き方を確認しておきましょう。
$data = [
"名前" => "さくら",
"年齢" => 25,
"職業" => "エンジニア"
];
// JSON形式に変換(日本語対応)
$json = json_encode($data, JSON_UNESCAPED_UNICODE);
echo $json;
// 出力: {"名前":"さくら","年齢":25,"職業":"エンジニア"}
// JSONから配列に戻す
$decoded = json_decode($json, true);
print_r($decoded);
このように、PHPで配列とJSONを自由に変換する方法を身につけておくと、データ連携・API通信・JavaScriptとのやりとりなど、さまざまな場面に対応できるようになります。PHP初心者にとっても、難しい文法ではなく、実用的で学びがいのある機能です。
最初はJSONの中かっこやコロンに戸惑うかもしれませんが、実際にPHPで試していくうちに自然と理解が深まっていきます。今後の学習やWebアプリ開発に役立ててください。
生徒
「PHPで配列をJSONに変換する方法がやっとわかってきました!json_encodeで文字列にして、json_decodeで配列に戻すってシンプルなんですね!」
先生
「その通りです。特にJSONはJavaScriptとデータをやり取りするのに最適な形式なので、PHPでもよく使われますよ。」
生徒
「文字化けの対策としてJSON_UNESCAPED_UNICODEを使うのも知れてよかったです。日本語を扱うときは必須なんですね。」
先生
「はい、そこは意外と見落としやすいポイントです。今後、API通信やJavaScriptとの連携をするときに必ず役立ちますよ。」
生徒
「これでWebアプリの開発にも挑戦できそうです。配列やJSONがこんなに便利だとは思いませんでした!」
先生
「ぜひどんどん使ってみてください。シンプルなコードでも、しっかり動かせると理解が深まりますよ。」