PHPでJSONデータを見やすく整形した上で表示させる方法
PHPで何らかのデータをjson_encodeでJSONに変換し、そのままecho等で出力させると当然ながら日本語がエンコードされるしインデントが無いので見づらい。ブラウザ上で表示させるだけならdBugとかで問題無いが、チャットとかに内容をコピペしたい場合に難儀する。以下に解決方法をメモ。
目次
リファレンス
json_encode
https://www.php.net/manual/ja/function.json-encode.php
JSON定数
https://www.php.net/manual/ja/json.constants.php
対応方法
ソースコード
$array = [[ 'name'=>'千代田区', 'code'=>'1', 'kana'=>'ちよだく', 'en'=>'chiyoda'],[ 'name'=>'中央区', 'code'=>'2', 'kana'=>'ちゅうおうく', 'en'=>'chuou'],[ 'name'=>'港区', 'code'=>'3', 'kana'=>'みなとく', 'en'=>'minato'],[ 'name'=>'新宿区', 'code'=>'4', 'kana'=>'しんじゅくく', 'en'=>'sinjyuku'],[ 'name'=>'文京区', 'code'=>'5', 'kana'=>'ぶんきょうく', 'en'=>'bunkyou']]; #通常パターン echo json_encode($array); #整形パターン echo json_encode($array, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
出力例
通常パターン
[{"name":"\u5343\u4ee3\u7530\u533a","code":"1","kana":"\u3061\u3088\u3060\u304f","en":"chiyoda"},{"name":"\u4e2d\u592e\u533a","code":"2","kana":"\u3061\u3085\u3046\u304a\u3046\u304f","en":"chuou"},{"name":"\u6e2f\u533a","code":"3","kana":"\u307f\u306a\u3068\u304f","en":"minato"},{"name":"\u65b0\u5bbf\u533a","code":"4","kana":"\u3057\u3093\u3058\u3085\u304f\u304f","en":"sinjyuku"},{"name":"\u6587\u4eac\u533a","code":"5","kana":"\u3076\u3093\u304d\u3087\u3046\u304f","en":"bunkyou"}]
整形パターン
[
{
"name": "千代田区",
"code": "1",
"kana": "ちよだく",
"en": "chiyoda"
},
{
"name": "中央区",
"code": "2",
"kana": "ちゅうおうく",
"en": "chuou"
},
{
"name": "港区",
"code": "3",
"kana": "みなとく",
"en": "minato"
},
{
"name": "新宿区",
"code": "4",
"kana": "しんじゅくく",
"en": "sinjyuku"
},
{
"name": "文京区",
"code": "5",
"kana": "ぶんきょうく",
"en": "bunkyou"
}
]
解説等
json_encodeの第2引数でオプション的なものが指定できる。また、各オプションは「|」でつなぐことで複数設定可能。
今回指定したのは以下の通り。
JSON_UNESCAPED_SLASHES
「/」をエスケープしない。
JSON_UNESCAPED_UNICODE
マルチバイト文字をエンコードしない。
JSON_PRETTY_PRINT
スペースを使って整形する。
所感
今までだとJSON整形ツールのようなサイトを利用していたが、その一手間が無くなるのはありがたい。
関連記事
-
-
PHPでファイルのダウンロード時に速度制限をかける方法(分割ダウンロード)
オンラインストレージサービス等で有料会員じゃない場合、ファイルのダウンロード時に ...
-
-
smart_resize_imageで縦横の比率関係なく、固定リサイズ
PHPで縦横どちらかが指定の長さを超えた場合、比率を保ったままリサイズで使ったs ...
-
-
formにGoogle reCAPTCHA v3を組み込み、PHPでスコア判定する方法
だいぶ前にGoogle reCAPTCHA v2をformに組み込むという記事を ...
-
-
phpdotenvライブラリを使用してPHPで.envファイルを読み込ませる方法
CodeIgniterを勉強していた際に各種設定は「.env」というファイルに記 ...
-
-
PHPMailerでエンベロープFrom(Return-Path)を指定する方法
同じメールアドレスから送信したメールがmb_send_mail関数だと受信できる ...