エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


JSON形式の値を配列形式に変換・PHPでは json_decode()、json_encode()

      2017/05/14

JSON形式の値を PHPで配列に変換する処理

 

JSONとは?

 
JSONとは、「JavaScript Object Notation」の略で、XMLと同じくテキストベースのデータフォーマットです。
名前にある通り、構文は JavaScriptにおけるオブジェクトの表記法をベースにしていますが、JavaScript専用のデータフォーマットではなく、いろいろなサービスやプログラム間でのデータの受け渡しができるように設計されています。
 
Webサービスでの利用方法では、他サービスから APIを利用してデータを取得する場合のデータの受け取り方法として、JSON形式や XML形式でデータを受け渡しする場合が多々あります。
 
XMLに関しては「XML形式の値を配列形式に変換・PHPでは simplexml_load_string()」の記事を参照してください。
 
 
今回の記事では、JSON形式のデータを配列形式に変換するツール「JSONの値のデコードツール」の紹介と、ツールの処理に関する解説を行います。
 
 

JSON形式のデータのサンプル

 
この記事を書いていた時とほぼ同じタイミングで公開したツールに以下の 2つがあります。
 2点間の直線距離計算ツール(地点1の緯度に基づき簡易計算)
 
 路線・駅検索+駅からの距離検索
 
それぞれのツールに関する解説は以下の記事を参照してください。
路線・駅検索のために緯度経度からPHPで2点間の距離を計算する処理解説
路線・駅検索をPHPで実装する方法解説。GoogleMapsの緯度経度から計算し検索
 
 
このツールを作成する際に利用した「路線・駅」のデータ、および、APIには「駅データ.jp」を利用させていただいています。
「駅データ.jp」の APIを利用した場合、APIから戻ってくる路線や駅の情報は、JSON形式か、XML形式かのいずれかになります。
 
その「駅データ.jp」の「路線API」から「りんかい線」の路線情報を取得した JSONの値が下記の様になります。
 

 
下記サイトから取得。
http://www.ekidata.jp/api/api_line.php
 
上記の情報が JSON形式のデータなのですが、APIに対して「『りんかい線』の路線情報をください」という指示を出すと、返ってくるデータです。
 
APIを利用する側のプログラムは、今回私が使用した PHPをはじめとして、Perl(CGI)、Python、Rubyなど様々です。
そのとき、何か特定の言語に依存する形で情報が戻ってくると、受け取る側のプログラムも限定してしまう可能性が出てきます。
 
そのため、どういう言語であっても支障なく情報のやりとりができるようにしたものが、テキストベースのデータフォーマットであり、その一つの形式が JSONということになります。
 
ぱっと見ただけでは分かりにくいのですが、それぞれに、「項目名と値」が対になって編集されています。
これが JSON形式のデータです。
 
これを受け取った後、PHPなら PHPで、そのプログラムで扱いやすいような配列などの形式に変換して使用するわけです。
 
 
「JSONってなに?」っていう事を検索してみてもイマイチなんだかよく分からない説明のサイトしかないのは、具体的な説明なしに理解することが難しいからでしょう。
 
 

JSONの値のデコードツール」とは?

 
JSONの値のデコードツール」は、入力された JSON形式のデータを配列形式に変換するツールです。
 
この記事は、この「JSONの値のデコードツール」を紹介する記事なのですが、「JSONの値のデコードツール」は、JSON形式のデータを配列形式に変換するだけの機能しかなく、非常に単純なツールです。
 
そもそもは、とある Webサービスの APIを利用した Webサービスを作成しているとき、APIから取得した JSONの値を確認するために作成したものでした。
 
非常に単純なものですが、せっかく作ったので、公開することにしたものです。
 
ちなみに、この時に利用していた Webサービスは「駅データ.jp」ではありませんが。
 
 

json_decode()、json_encode()で JSON形式をデコード、エンコード

 
JSON形式のデータを配列形式に変換することを「デコード」と言いますが、JSON形式のデコードには、「json_decode()」関数を使用します。
 

 
第一引数に、JSON形式の値を編集します。
 
第二引数に、「false」 or 「true」を編集します。
「true」を編集すると、配列で出力することを目的にしていますので、「JSONの値のデコードツール」では「true」が指定してあります。
指定しない場合は、標準設定の「false」となり、オブジェクト形式で出力されます。
 
第三引数は、再帰の深さ。第四引数は、オプションで「JSON_BIGINT_AS_STRING」のみ指定できます。
 
 
この「JSONの値のデコードツール」は、入力チェックの処理などはありますが、基本的にこの「json_decode()」関数のみの処理になっています。
 
 
また、「json_encode()」関数は、「json_decode()」関数の逆で、配列やオブジェクトを JSON形式のデータに変換することができます。
 

 
第一引数に、JSON形式にする値を編集します。UTF-8である必要があります。

 - PHP・Smarty・ECCUBE

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

指定した数で文字列を丸める関数substr、mb_substr、mb_strimwidthの違い
指定した数で文字列を丸める(n文字目で…にする)関数substr、mb_substr、mb_strimwidthの違い

文字列を指定された数で抜き出すPHPの関数、substr、mb_substr、mb_strimwidthについての解説。似た関数だが引数の指定方法が違ったり、文字数がバイト数か文字数かも違ったり、注意が必要だ。

ECCUBEの注文完了画面注文番号と商品情報を編集するCRITEO(クリテオ)タグを編集

ECCUBEの注文完了画面にクリテオのタグを編集する方法を紹介。標準機能では完了画面に注文IDや購入商品の情報を渡さないため改修が必要です。

ECCUBEの商品一覧ページのSEO対策!rel=”next” rel=”prev”を設定

Googleは関連あるページはその旨明示するよう求めています。ECCUBEの商品一覧ページでその求めに応じるための「rel=”next”」「rel=”prev”」について解説します。

リダイレクトループが原因で「ERR_TOO_MANY_REDIRECTS」「このページを表示できません」が出たときの対策12事例+α

リダイレクトループ、自動転送設定ループの原因の解説とその対応方法を含め事例 12例を挙げて説明。

PHPで正規表現の検証には preg_match_allが便利

PHPで正規表現の検証には preg_match_allが便利です。その便利さの使い方の解説です。

サーバ移転、PHPバージョンアップでPHPのソースコードが表示される・ショートタグのPHPが動かない

PHPでショートタグを使うのは危険。サーバ移転やバージョンアップで動かなくなる!ソースが丸見え、設定情報流出のリスクが!php.iniのshort_open_tagの設定を再確認。

乱数発生器(パスワード生成サービス)がバージョンアップで高速化!
乱数発生器(パスワード生成サービス)がバージョンアップで高速化!

乱数やパスワードを生成する乱数発生器を高速化!重複しない10桁、20桁の文字列を10万件、20万件と生成することも可能!イベントのキャンペーンのシリアルコードなどにも利用可能!

パーミッション(属性)一括変更ツール・WordPress最適化済

WordPressのパーミッション(属性)を一括変更するツールを作成!ファイル、フォルダのパーミッションが一覧表示でき、ファイルを選んでパーミッションの変更が行えます。

ECCUBEの問い合わせフォームに任意の値を引数として渡す方法

ECCUBEのお問い合わせフォームに値を固有の情報を送りそれに基づいて処理をする方法を解説。ボタンの設置、受け取り側のテンプレート、プログラムのサンプルソースを提供。

QRコード作成ライブラリ「cakePHP-QR-Code-Helper」をPHPで使うカスタマイズ
QRコード作成ライブラリ「cakePHP-QR-Code-Helper」をPHPで使うカスタマイズ

CakePHP2用のQRコード作成ライブラリ「cakePHP-QR-Code-Helper」をプレーンのPHPでも使うためのカスタマイズ方法を解説。1ファイルを設置するだけでQRコードが作れるため使い勝手がいい。