APIやMCPサーバーを叩いて返ってきたJSONを整形表示させたい場面は多いと思いますが、JSONを人間にとって見やすい状態に整形するツールJSONフォーマッターをPHPで実装して、CLIでも使えるようにしようという企画です。
Pythonではjson.toolが有名ですが、PHPでやります。
C言語で書かれたjqコマンドもありますが、PHPの標準関数でできるならそっちの方が良いだろうということです。
特に、APIやMCPサーバーで取り扱うデータは機密情報が多いと思いますので、外部サービス利用や、外部通信の発生するツールはもってのほかでしょう。
なので、機密情報を盗まれる心配のない、自前のツールが良いのです。
結論
▼PHPでのJSONフォーマッターはこれだけ
echo json_encode(
json_decode(trim(file_get_contents("php://stdin")), true),
JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE
);
※PHP 7.3, 7.4, 8.0, 8.1, 8.2, 8.3, 8.4 で動作確認済
※スクリプトファイルを設置しても良いし、シェル関数で登録しても良いし。
※標準入力からJSONを受け取って整形出力
※curlコマンドでAPI叩いて、パイプでつなげて整形。
シェル関数で登録して使う例
筆者はZshを使っているので:
▼「~/.zshrc」に追記する例
jf() {
php -r 'echo json_encode(
json_decode(trim(file_get_contents("php://stdin")), true),
JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE
);'
}
※保存後、「source ~/.zshrc」を実行するか、新しいターミナルを開くかする。
▼動作確認の例
echo '{"jsonrpc": "2.0", "success": true, "data": [{"id": 1, "name": "ほげ"}, {"id": 2, "name": "ふが"}]}' | jf

▼Curlコマンドとの併用例
curl -s https://jsonplaceholder.typicode.com/users/1 | jf

※ここのサイトのレスポンスJSONは元々整形されている。。
※一応、改行コードも対応していますよということで。
▼行番号が欲しければ「nl」コマンドを併用
curl -s https://jsonplaceholder.typicode.com/users/1 | jf | nl

- 1
- 0
- 0
- 0



コメント