curlのJSONレスポンスを見やすく整形する方法
curlで取得したJSONレスポンスをjq・Python・formatarc CLIで整形する方法を解説。コマンド一行で読みやすいJSONに変換できます。

curl のレスポンスが読みにくい理由
API の動作確認で curl を使うと、レスポンスの JSON がこのように返ってきます。
curl -s https://api.example.com/users/1
{"id":1,"name":"Tanaka","email":"tanaka@example.com","address":{"city":"Tokyo","zip":"100-0001"},"roles":["admin","editor"]}
改行もインデントもないため、ネストが深くなるほど構造の把握が難しくなります。ここからは、この出力を見やすく整形する方法を紹介します。
jq で整形する
JSON の整形ツールとしては jq が最も広く使われています。
jq のインストール
# macOS
brew install jq
# Ubuntu / Debian
sudo apt install jq
# Windows (Chocolatey)
choco install jq
基本的な使い方
curl の出力をパイプで jq に渡すだけです。
curl -s https://api.example.com/users/1 | jq .
{
"id": 1,
"name": "Tanaka",
"email": "tanaka@example.com",
"address": {
"city": "Tokyo",
"zip": "100-0001"
},
"roles": [
"admin",
"editor"
]
}
-s オプションで curl のプログレスバーを非表示にしています。
よく使うフィルタ
jq は整形だけでなく、特定のフィールドを抽出するフィルタとしても使えます。
特定のキーを取得する場合はこちらです。
curl -s https://api.example.com/users/1 | jq '.name'
"Tanaka"
ネストされたキーにはドットでアクセスします。
curl -s https://api.example.com/users/1 | jq '.address.city'
"Tokyo"
配列から全要素の特定フィールドを抽出する場合は [] を使います。
curl -s https://api.example.com/users | jq '.[].name'
"Tanaka"
"Suzuki"
"Sato"
条件でフィルタする場合は select を使います。
curl -s https://api.example.com/users | jq '.[] | select(.roles[] == "admin")'
Python の json.tool で整形する
Python がインストール済みの環境なら、追加のツールは不要です。標準ライブラリの json.tool モジュールがそのまま使えます。
curl -s https://api.example.com/users/1 | python3 -m json.tool
{
"id": 1,
"name": "Tanaka",
"email": "tanaka@example.com",
"address": {
"city": "Tokyo",
"zip": "100-0001"
},
"roles": [
"admin",
"editor"
]
}
jq のようなフィルタ機能はありませんが、整形するだけなら十分です。Python 2 の環境では python コマンドに読み替えてください。
formatarc CLI で整形する
インストールと使い方
formatarc は npx で即時実行できます。インストール不要です。
curl -s https://api.example.com/users/1 | npx formatarc json-format
{
"id": 1,
"name": "Tanaka",
"email": "tanaka@example.com",
"address": {
"city": "Tokyo",
"zip": "100-0001"
},
"roles": [
"admin",
"editor"
]
}
頻繁に使うなら、グローバルにインストールしておくと起動が速くなります。
npm install -g formatarc
curl -s https://api.example.com/users/1 | formatarc json-format
YAML / CSV 変換もパイプで使える
formatarc は JSON 整形だけでなく、そのまま YAML や CSV への変換もできます。
curl -s https://api.example.com/users/1 | npx formatarc json-to-yaml
id: 1
name: Tanaka
email: tanaka@example.com
address:
city: Tokyo
zip: "100-0001"
roles:
- admin
- editor
CLI の詳しい使い方は formatarc CLI の導入ガイド で紹介しています。
ブラウザで整形する
FormatArc JSON Formatter の使い方
コマンドラインを使わない方法もあります。curl の出力をコピーして JSON Formatter に貼り付ければ、ワンクリックで整形できます。
手順はシンプルです。
- curl のレスポンスをコピーする
- FormatArc JSON Formatter を開く
- 左側のテキストエリアに貼り付ける
- 「Format」ボタンを押す
整形結果はそのままコピーしたり、YAML / CSV に変換したりできます。
エラーがあった場合
JSON に構文エラーがあると、整形に失敗します。よくある原因と対処法は JSON Parse Error の解決方法 にまとめています。
どの方法を選ぶか
| 方法 | インストール | フィルタ機能 | おすすめの場面 |
|---|---|---|---|
| jq | 必要 | 高機能 | 日常的に API を扱う開発者 |
| Python json.tool | 不要(Python 必須) | なし | 手軽に整形したいとき |
| formatarc CLI | npx で即実行 | なし(変換は可能) | JSON 以外の変換も必要なとき |
| ブラウザ(FormatArc) | 不要 | なし | コマンドラインが苦手な場合 |
jq を普段使いしつつ、YAML や CSV への変換が必要なときに formatarc CLI を併用するのが効率的です。
関連記事
まとめ
curl で取得した JSON を整形する方法を4つ紹介しました。jq はフィルタ機能も含めて最も高機能ですが、単純な整形なら Python の json.tool でも十分です。YAML や CSV への変換が必要な場合は formatarc CLI が便利です。ブラウザで手軽に試したい場合は FormatArc JSON Formatter をお使いください。