1. 導入:なぜJSONの整形が必要なのか
APIの開発やクラウドインフラの操作をしていると、レスポンスとして「改行なしの巨大なJSON」が返ってくることがよくあります。これをそのままターミナルで読もうとすると、どこからどこまでがデータなのか判別できず、デバッグに非常に時間がかかります。今回紹介する「jq」は、そんな真っ白で読みづらいJSONを、瞬時に「構造化された色付きデータ」へと変換してくれる、エンジニアにとっての必須ツールです。
2. 基礎知識:jqとは何か
jqとは、コマンドライン上で動作する軽量かつ柔軟なJSONプロセッサです。
JSON整形とは、改行やインデントを適切に配置して、人間が視覚的に階層構造を把握できるようにすることを指します。jqを使うことで、単に見やすくするだけでなく、特定のキーだけを抽出したり、データを加工したりすることが可能になります。APIデバッグの現場では、これを使わない日はありません。
3. 実装/解決策:基本の整形とフィルタリング
まずは、JSONを整形して表示する基本コマンド「jq .」を覚えましょう。
パイプ(|)を使って、他のコマンドの出力結果をjqに渡すのが一般的な使い方です。
基本構文:
cat data.json | jq .
特定のキーだけを取り出したい場合は、ドットに続けてキー名を指定します。
cat data.json | jq .key_name
4. サンプルプログラム:そのまま使える実用コード
以下は、APIから返ってきたJSONを整形し、さらに特定の項目をフィルタリングして表示する例です。
1. 巨大なJSONファイルを読みやすく整形して表示する
cat response.json | jq .
2. 特定のキー(例: “user_id”)のみを抽出する
cat response.json | jq .user_id
3. 複数のキーを組み合わせてオブジェクトとして抽出する
cat response.json | jq ‘{name: .name, email: .email}’
4. 配列の中身を一つずつ取り出して表示する(ループ処理に近い動作)
APIのレスポンスが配列の場合に便利です
cat response.json | jq ‘.[] | .name’
※ コピー&ペーストして、お手元のJSONファイル名(response.json)を適宜書き換えて実行してみてください。
5. 応用・注意点:現場で役立つTips
・色のカスタマイズ
デフォルトで色分けされますが、環境によっては色がうまくつかない場合があります。その際は –color-output オプションを明示的に付与してください。
・エラーハンドリング
JSONの形式が不正な場合、jqはエラーを返します。jqがエラーを吐くときは「JSONそのものが壊れている」可能性が高いです。開発の初期段階で「JSONが正しい形式か」を確認するバリデーターとしても活用しましょう。
・セキュリティ上の注意
jqでフィルタリングする際に、機密情報(パスワードやAPIキーなど)が含まれるJSONを扱う場合は注意してください。ターミナルの履歴(history)にコマンドが残るため、機密情報をフィルタリングする際は、ファイルに出力するなどして履歴に残さない工夫をすることをおすすめします。
jqは一度使い始めると手放せなくなるツールです。まずは「cat ファイル名 | jq .」から始めて、徐々に複雑なフィルタリングに挑戦してみてください。

コメント