【PHP】JSONフォーマッターは簡単に作れるよ

PHP

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

コメント

タイトルとURLをコピーしました