【PHP入門】JSONのデータを処理する方法(json_encode/json_decode)

image (3)
書いた人 ヤマシタ
侍エンジニア塾ブログは、未経験からWebアプリ開発と仕事獲得をサポートする
侍エンジニア塾のオウンドメディアです。
プログラミング学習を覗き見

こんにちは!フリーエンジニアのヤマシタです。

PHPではデータをJSON形式に変換したり、JSON形式をデコードする関数が用意されています。

この記事ではそんなPHPのJSONについて、

・json_encodeでデータをJSON形式に変換する方法
・日本語をJSON形式にエンコードする方法
・json_decodeでJSON形式のデータをデコードする方法

などの基本的な内容から、

・JSON形式のデータをPOSTで外部サイトへ送信する方法

などの応用的な使い方についても解説します。

ここでは、そんなJSON形式の処理について詳しく解説いたします!

JSONとは?

1
なんかJSONって言葉をちらほらと聞くけどJSONっていったい何者?

 

2
JSONとは、「JavaScript Object Notation」の略で、JavaScriptの処理でオブジェクトを記述するための書式のことを言うんだ。

 
1
うーん・・・イマイチよくわからないなぁ。

 
 
2
つまりJSONとはXMLやCSVファイルのように、簡潔に構造化されたデータを記述することが可能なんだよ。

 

1
そーなんだ。具体的にはどんな内容なの?

 

2
具体的にJSON形式は「キーと値」のペアで成り立っていて、JSON形式のデータを用意しておけば、データを共用して使用することが可能になるんだ。

 
1
つまり、JSONを使えば異なる言語のプログラム間でデータのやりとりが簡単にできるってことね♪

 

2
まぁざっくりとそんな感じだね!
ここではPHPでデータをJSON形式に変換する方法や、JSON形式でエンコードされたデータを元に戻す方法について解説していくよ。

json_encodeとは

指定した値をJSON形式に変換するには、json_encode関数を使用します。

json_encode関数は以下のように記述します。

書き方:

引数:
第一引数にはJSON形式に変換するための文字列や配列を指定します。
第二引数を指定した場合は、どのような形式で変換するか、オプションで定数を指定することができます。

JSONの定義済定数については、以下のページを参照してください。
http://php.net/manual/ja/json.constants.php

第三引数を指定する場合は、最大の深さを正の数で指定することができます。

返り値:
json_encode関数は、戻り値にJSONエンコードされた値を返し、処理が失敗した場合はFALSEを返します。

注意点:
変換する全ての文字列データは文字コードUTR-8にエンコードされていなければいけません。

json_encodeの使い方

ここではjson_encode関数を使用して、指定した文字列の値をJSON形式に変換する方法を見ていきましょう。

以下に簡単なサンプルプログラムを紹介します。

サンプルプログラム

実行結果:

1
実行結果を見てみると文字列と文字列の間にコロン(:)があって、それぞれカンマ(,)区切られているわね!

 

2
JSONは「キーと値」のペアとして構成されていることは説明したけど、json_encodeを使うと「キー:値, キー:値」のようにキー:値のペアがカンマ(,)で区切られているJSON形式に変換してくれるんだ!

 

1
なるほど!思ったより簡単ね!

 

2
そんなjson_encode関数のさまざまな使い方や、日本語に変換する方法については、以下の記事でも詳しく解説してるから参考にしてみるよいいよ。

json_encodeのさらに詳しい使い方はこちらの記事で解説しています!

日本語をjson_encodeする

日本語が含まれる配列をjson_encodeでエンコードすると、日本語が文字コードで表示されてしまいます。

そのため、日本語をjson_encodeするには、第二引数にJSON_UNESCAPED_UNICODEを指定します。

JSON_UNESCAPED_UNICODEを指定すると、マルチバイト文字をそのままの形式で扱います。

サンプルプログラム

実行結果:

json_decodeとは

JSON形式にエンコードされた文字列を受け取って、デコードするにはjson_decode関数を使用します。

デコードとは、簡単に説明するとエンコードされたデータを元に戻すことを言います。

json_decode関数は、以下のように記述します。

書き方:

引数:
第一引数にはデコード対象のJSON文字列を指定します、以降の引数は各種オプションを指定します。

assoc:TRUEの場合は連想配列の形式で返されます。
depth:ユーザー指定の再帰の深さを指定します。
options:JSONデコードオプションのビットマスクを指定します。

返り値:
JSONエンコードされたデータを、適切なPHPの型として返します。

デコードを失敗したり、再起制限を超えている場合はNULLを返します。

json_decodeの使い方

ここではjson_decode関数を使用して、指定した文字列の値をデコードする方法を見ていきましょう。

以下に簡単なサンプルプログラムを紹介します。

サンプルプログラム

実行結果:

1
json_decodeを使えばJSON形式のデータを配列に戻せるってことね♪

 

2
でもひとつ決まりがあって、json_decodeの返り値を連想配列で受け取るためには、第二引数をTRUEで指定する必要があるから気をつけてね!

 

1
わかりました!

 

JSON形式のデータをPOSTで送信する

JSON形式のデータをPOSTで送信することも可能です。

以下のサンプルではcURL関数を使用して、指定したサーバにJSON形式のデータをPOSTで送信しています。

サンプルプログラム

cURL関数による外部サイトとの送受信を行う処理の詳細については、以下の記事で詳しく解説しています!

まとめ

ここではJSON形式のデータを扱うために、

・json_encodeでデータをJSON形式に変換する方法
・日本語をJSON形式にエンコードする方法
・json_decodeでJSON形式のデータをデコードする方法
・JSON形式のデータをPOSTで外部サイトへ送信する方法

などについて解説しました。

JSON形式は、外部サイトやプログラム間でデータをやりとりするときに便利な形式ですので、この機会にぜひ覚えておきましょう!

もし、JSON形式にエンコード、デコードする方法を忘れてしまったら、この記事を思い出してくださいね!


33歳、未経験だった僕がフリーエンジニアになれた理由
現在フリーでWEBエンジニアをやられている濱口直行さん。33歳で、プログラミングを学び始め、約半年という短い期間で独立までされた学習ログを余すことなくインタビューさせていただきました。

プログラミングを学習中の方はもちろん、独立をお考えの方まで幅広く活用できる記事になっています。この機会に是非活用していただければと思います。


最短でプログラミングを習得したい方へ

元々ITリテラシーのある方やプログラムの学び方がわかっている方は独学で習得することも可能でしょう。

ただし、実際の学習期間中はつまづいている時間がほとんどです。

「もう挫折したくない」
「本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい。」
「自分だけのカリキュラムで効率的に勉強したい」

そんな方はお気軽に侍エンジニア塾までご相談ください。

弊社では、

  • プログラミング基礎学習
  • オリジナルアプリ開発
  • 仕事獲得

までをひと通り学習できます。

まずは無料体験レッスンで、弊社のコンサルタントと一緒にあなた専用の学習方法やカリキュラムを考えてみませんか?

挫折しない学び方や、通常1000時間以上かかる学習時間を1/3にする方法などより具体的なアドバイスもさせていただいています。

詳しくは下の画像をクリックして弊社サービス内容をご確認ください。

cta1

学習者インタビュー

人気講師インタビュー

人気記事セレクション

プログラミング学習者必見

専属講師に質問し放題、レッスンし放題!最短1ヶ月でフリーランスエンジニア
プログラミング学習カリキュラム無料公開中
Ruby学習カリキュラム無料公開中
Python学習カリキュラム無料公開中
 1記事最大11,000円!テックライター募集


LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

ヤマシタ

フリーランスエンジニア。ITに関わるさまざまなコンテンツの企画・制作も行っています。
ITに関してはノウハウ系、ライフハック系、トレンド系など、今まで200本以上の執筆経験があります