PHPの配列をJSONデータとして出力する方法とJSONを読み込み配列にする方法

今回はPHPで配列をJSONに変換して出力したり、JSONデータを読み込んで配列にする方法です。

JSONというのは、JavaScript Object Notationの略で、テキストのデータです。

といっても最近ではJavaScriptのためのデータではなく、PHPなどでも幅広く使われています。

JSONという形式はXMLに似ててXMLを簡易的にした感じです。(だと僕は思ってます。)

XMLはタグ(キー)と値の組み合わせで、PHPで言う連想配列の作りに当てはまります。

 

配列をCSVに出力する方法だと連想配列のキーが無くなってしまいます。

配列をDBやファイルに出力して保持したい場合に、キーも保持したいならJSONがいいですね。

PHPの連想配列をJSONデータに変換する方法

PHPの配列をJOSN形式のデータに変換するには json_encode() を使います。

json_encode($配列, $オプション)

$配列は、JSONに出力するデータです。連想配列も多次元配列も対応します。

$オプションは、出力形式などを指定できます。

戻り値は、JSON形式に変換されたデータが取得できます。

詳細はphp.net参照

 

実際にJSON形式に変換してみましょう。

これを実行すると、以下のように出力されます。

ぱっと見分かりにくいですが、日本語部分はユニコードに変換されてしまいます。

これでも問題無く、再度読み込んだときには見て読める日本語になります。

 

気になる方は、json_encodeの第2引数のオプションに JSON_UNESCAPED_UNICODE を指定すると日本語になります。

日本語で表示され見やすくなりました。

ダブルクォーテーションや文字列内のカンマなども正しく変換してくれています。

 

一応補足ですが、出力結果は通常は1行で出力されます。

これを階層構造で出力するためには JSON_PRETTY_PRINT もオプションに指定してやります。

日本語のオプションも同時に指定したい場合は | を区切りにして複数指定することができます。

次はこれを読み込んで元の連想配列を作成します。

JSONを読み込み連想配列にする方法

JSONデータを読み込み配列にするには、json_decode() を使います。

$配列 = json_decode($JSONデータ, true)

$JSONデータは、配列に変換する元のJSONデータです。

第2引数の true は、連想配列で返す場合に指定します。この指定が無いと、キーを持つデータはオブジェクトに変換されます。

戻り値の$配列は、変換後の配列です。

詳細はphp.net参照

実際に動かしてみます。

JSONはテキストデータなので文字列で定義することができます。

今回は配列をJSONに変換し、そのJSONを再度配列に変換する流れで行います。

実行結果は次のようになります。

ちゃんと値の中にカンマやダブルクォーテーションがある場合も、1つの配列の要素として処理できています。

連想配列でキーを持っていたものは、キーもちゃんと復元されています。

まとめ

配列をJSONに変換するにはjson_encode()を使う。

JSONを配列に変換するにはjson_decode()を使う。

 

json_encode()は、見て分かる日本語にするには、第2引数のオプションに JSON_UNESCAPED_UNICODE を設定する。

出力時に整形させたい場合は JSON_PRETTY_PRINT をオプションに指定する。

 

json_decode() は第2引数に true を指定しないと、キーを持つ要素がオブジェクト形式になってしまう。

true を指定すれば連想配列になる。

コメントを残す

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

CAPTCHA