jq実験場
jq Playground
貼り付けたJSONにjq 1.7のフィルタをブラウザ内で実行し、チートシートと同じ結果を出すコマンドラインを渡します。
jqのフィルタを、ブラウザの中で文書に対して実行します。文字列の操作をいくつか並べたものではなく、jq 1.7の文法を実装したインタプリタなので、パイプも`reduce`も`def`も、分解代入も更新の演算子も、コマンドラインと同じように動きます。フィルタの下には、同じことをするシェルのコマンドが出ます。
フィルタ
jq '.orders[] | select(.status == "shipped") | {id, customer}' data.json
入力 JSON
.json ファイルを置く
このタブの中だけで読みます。どこにもアップロードしません。
出力 1件
出力
1
時間
<1 ms
型
object
jq 1.7 の文法をここで直接実装したインタプリタです。対応しているのはパス(.a[0].b, .., ?)、|·,·//、算術・比較・and/or/not、文字列の埋め込み、if・try・reduce・foreach・as(分割代入を含む)・def、そして |=·+= のような更新、@base64·@csv のようなフォーマット、下に並ぶ組み込み関数 180個です。テストは jq のマニュアルにある例そのものです。
対応していないもの:input·inputs(文書はひとつだけです)、$ENV·env(空です)、label·break、--stream、@sh の中の入れ子配列、strptime の ISO 8601 以外の書式、getpath のストリームモード、モジュール(import)。正規表現は jq の Oniguruma ではなくブラウザのエンジンで動くので、\p{L} と名前付きグループは使えますが、後読みのあたりに細かな違いがあるかもしれません。
パスをひとつ取り出したいだけなら JSONPathテスターのほうが簡単かもしれません。
使い方
文書を貼り付けます
JSONの値が1つでも、いくつか続いていても構いません。jqの入力ストリームとして読み、いくつあるかをパネルの見出しに表示します。
フィルタを書くか、例の並びから1つ取ります
ボタンが、よく出てくる形を押さえています。select、map、group_by、文字列への埋め込み、reduce、そして更新の演算子です。マウスを載せると、何をするものかが出ます。
コマンドラインで使うのと同じフラグを立てます
出力1つにつき1行なら`-c`、キーの並べ替えは`-S`、文字列をクォートなしで出すなら`-r`、複数の入力を1つの配列にまとめるなら`-s`です。下のコマンドラインも一緒に更新されます。
出力だけでなく、コマンドもコピーします
生成された`jq …`の行は、POSIXのシェルに合わせて正しくクォートしてあるので、スクリプトやパイプラインにそのまま入れられます。
よくある質問
これは本当にjqですか
jqの文法を別に実装したインタプリタで、テストにはjqのマニュアルにある例をそのまま使っています。言語と、よく使う組み込み関数を扱います。jqそのものをコンパイルしたものではないので、jqのCの内部に頼るものは違う動きをします。
`input`が使えないのはなぜですか
ここには文書が1つしかなく、フィルタがさらに引き出せるストリームが無いからです。`input`、`inputs`、`$ENV`、`env`、`label`/`break`、`--stream`、モジュールは、理由も分からず失敗する代わりに、対応していないとページに書いてあります。
正規表現がjqと違う動きをします
jqはOnigurumaを使い、ここではブラウザのエンジンを使います。実際には`\p{L}`も名前付きのグループも両方で動き、差が出るのは後読みと、いくつかの文字クラスのエスケープのあたりです。大事なパターンなら、実際に動かす環境で確かめてください。
出力が5,000個で止まりました
ステップ数の上限とともに、意図的に置いた限界です。大きな文書に`..`をかければ出力は膨大になりますし、再帰が暴走するフィルタは、そのままではタブを固まらせます。フィルタを絞るか、`head`に流せるコマンドラインで動かしてください。
ここから渡せます
JSON Lines変換
JSON Lines Converter
NDJSONとJSON配列を相互に変換し、解析できない行は変換を止めずに行番号で知らせます。
JSONPathテスター
JSONPath Tester
JSONPathの式を文書に対して実行し、打っているあいだ一致するノードを光らせます。
JSONフォーマッター・検証
JSON Formatter & Validator
JSONを整形・圧縮して検証し、構文エラーがあれば行と列を正確に指し示します。
YAMLフォーマッター・検証
YAML Formatter & Validator
YAMLのインデントを揃えて検証し、パーサを壊すタブやアンカーの誤りに印を付けます。
次の一手
このツールが出したものをそのまま受け取れる道具です。
JSON⇄CSV変換
JSON ⇄ CSV
入れ子のJSONをドット記法の列名で平らに開くか、表からオブジェクトを組み直します。
JSONフォーマッター・検証
JSON Formatter & Validator
JSONを整形・圧縮して検証し、構文エラーがあれば行と列を正確に指し示します。
JSONPathテスター
JSONPath Tester
JSONPathの式を文書に対して実行し、打っているあいだ一致するノードを光らせます。
JSON Lines変換
JSON Lines Converter
NDJSONとJSON配列を相互に変換し、解析できない行は変換を止めずに行番号で知らせます。
Base64エンコード・デコード
Base64 Encoder & Decoder
テキストでもファイルでもBase64とBase64URLを符号化・復号し、UTF-8も正しく扱います。
curlをコードに変換
curl to Code
curlのコマンドをfetch・axios・Pythonのrequests・Go・PHP・PowerShellのコードに変換します。