ターミナルでJSONを整形する方法|jqをHomebrewでインストール
ターミナルなどコマンドラインでJSONデータを扱う際に、JSONデータが整形されず見にくいと場合があると思います。そのような場合に、『jq』というツールを利用することで、JSONデータを整形することができます。
今回は、そのjqをMacのHomebrewを利用してインストールする方法と、コマンドラインでJSONデータを取得する際に、jqを利用する例となります。
Homebrew(ホームブリュー)は、macOSのパッケージ(ソフトウェアやライブラリ)をコマンドラインで一元管理できるツールとなります。Homebrewのインストール方法などは、以下のリンク先を参考にしてみてください。
jqをHomebrewでインストール
まずは、以下のHomebrewのコマンドで、jqをインストールします。
brew install jq
また、以下のコマンドで、Homebrewでインストールしたすべてのパッケージを確認できます。
brew list
jqのバージョン・ヘルプを確認
以下、インストールしたjqのバージョン、ヘルプを確認するコマンドとなります。
バージョンを確認
jq -V
ヘルプを確認
jq -h
jqを利用するコマンドの例
コマンドラインでJSONデータを取得する際に、jqコマンドを組み合わせて利用することでJSONデータを整形して取得できます。
基本的なコマンド
以下は、JSONデータを整形して取得する基本的なコマンドの例となります。
curl 'example.com/XXXXXXXXXXXX' | jq '.'
上記コマンドでは、JSONデータを取得するcurlコマンドの後に、jqコマンドの jq '.' を |(パイプ)でつないでいます。
指定した箇所のJSONを取得する例
指定した箇所のJSONデータを整形して取得することも可能です。
以下の例では、配列のJSONデータの中から、オブジェクトのキーがfooの箇所のみを取得します。
curl 'example.com/XXXXXXXXXXXX' | jq '.[] | {foo}'
上記の例以外にも指定したJSONデータを取得する方法があります。詳しくは文末の参考サイトを確認してみてください。
JSON以外のデータが含まれている場合のエラー
jqを利用したコマンドの戻り値に、JSON以外のデータが含まれている場合、「Invalid numeric literal at line ●, column ●」のエラーが返されます。
その場合には、以下のコマンドで、JSONデータを整形して取得できます。
curl 'example.com/XXXXXXXXXXXX' | jq -R 'fromjson?'