勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

PHPでJSONデータを見やすく整形した上で表示させる方法

  PHP

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

  関連記事

SortableJSを使ってデータの並べ替え&保存

あるシステムを拝見した際にtableタグ内に並んでいる項目をドラッグ&ド ...

CSVファイルを使って郵便番号から住所を抽出する

■ソース <? error_reporting(E_ALL & ~ ...

PHPとLINEを連携させて通知を送る方法(file_get_contents / curlの2パターン)

PHPとLINEを連携させ、LINEに何らかの通知メッセージを送信したい。以下に ...

PHPからDBX Platformを利用してサーバ内のファイルをアップロードする方法

PHPで何らかのファイルを保存するようなケースだと今まではローカルに保存する、も ...

PHPでAPIを作成しJavaScript(jQuery無し)からリクエストする方法

管理画面等から何らかのデータをMySQLに登録し、そのデータをPHPで作成したA ...