jq は軽量で柔軟なコマンドライン JSON プロセッサであり、データをある形式から別の形式にスライス、フィルター処理、マップ、および変換できるという点で sed によく似ています。たとえば、JSON データを CSV (コンマ区切り値) に変換して、非 JSON 列の MySQL データベースにロードするために使用できます。 https://stedolan.github.io/jq/ からダウンロードできます。実験用のオンライン バージョンは https://jqplay.org/ にあります。さらに、jq は、他の多くの言語と同様に、Perl 互換正規表現 (PCRE) パーサーを使用します。 (この素晴らしいツールについては、ここにある単純な例よりも多くのことを説明する価値があります。マニュアルを読むことは、このツールの多くの機能を理解するための迅速な方法です。)
以下のエラーが発生した場合:
jq: command not found (JSON CLI Parser)
選択したディストリビューションに従って、以下のパッケージをインストールしてみてください。
分布 | コマンド |
---|---|
OS X | brew install jq |
Debian | apt-get install jq |
Ubuntu | apt-get install jq |
アルパイン | apk add jq |
Arch Linux | pacman -S jq |
カリ Linux | apt-get install jq |
Fedora | dnf install jq |
Raspbian | apt-get install jq |
ドッカー | docker run cmd.cat/jq jq |
jq に引数を指定しないと、JSON ドキュメントが「きれいに印刷」されます。これは、単一の平坦な線で表示するのが難しい埋め込みオブジェクトと配列のレイヤーが多数含まれる非常に複雑なドキュメントの場合に非常に便利です。
特定のフィールドを選択
場合によっては、JSON ドキュメント内のすべてのデータが重要なわけではないため、jq を使用してデータを再形成し、選択した部分のみを提供できます。例:
$ jq '{city, state, id}' myfile.json
jq コマンドの例
1. プリティプリント形式で JSON ファイルを出力します:
$ jq . file.json
2. 配列のすべての要素 (またはオブジェクトのすべてのキーと値のペア) を JSON ファイルに出力します。
$ jq .[] file.json
3. JSON オブジェクトをファイルから配列に読み込み、出力します (`jq .[]` の逆):
$ jq --slurp . file.json
4. JSON ファイルの最初の要素を出力します:
$ jq .[0] file.json
5. stdin からの JSON テキストの最初の要素の特定のキーの値を出力します:
$ cat file.json | jq .[0].key_name
6. stdin から JSON テキスト内の各要素の特定のキーの値を出力します。
$ cat file.json | jq 'map(.key_name)'
まとめ
jq は、コマンドライン JSON プロセッサです。 JSON データの sed のように機能します。これを使用して、sed、awk、または grep を使用して生のテキストを処理するのと同じように、構造化データをフィルター処理、解析、および変換できます。 Jq は GitHub (https://stedolan.github.io/jq/) で入手できます。インストールは非常に簡単です。これは、Windows、macOS、および Linux で使用できる単一のバイナリです。ダウンロードして、システム PATH で使用可能なフォルダーにコピーするだけで、シェルまたはコマンド ラインから実行できるようになります。