jsongrep: ベンチマークでjqを上回るDFAベースのJSONクエリツール

✍️ OpenClawRadar📅 公開日: March 27, 2026🔗 Source
jsongrep: ベンチマークでjqを上回るDFAベースのJSONクエリツール
Ad

jsongrepの機能

jsongrep(jgバイナリ)は、クエリとJSON入力を取り、ドキュメント内のパスがクエリに一致するすべての値を出力します。JSONドキュメントを、オブジェクトと配列が分岐し、スカラー値が葉となり、キーとインデックスがエッジをラベル付けするツリーとして扱います。クエリ言語は、キーとインデックスのアルファベット上の正規言語です。

クエリ言語の機能

ドットパスは名前でネストされたフィールドを選択します:jg 'roommates[0].name'はroommates.[0].name: "Alice"を返します。

ワイルドカードは任意の単一キー(*)または任意の配列インデックス([*])に一致します:jg 'favorite_drinks[*]'はすべての配列要素を返します。

代替(|)はどちらかの分岐に一致します:jg 'name | roommates'は両方のフィールドを返します。

再帰的下降は、任意の深さを歩くためにクリーネ閉包内で*と[*]を使用します:jg '(* | [*])*.name'は任意の深さにあるすべてのnameフィールドを見つけます。-Fフラグは短縮形を提供します:jg -F nameは同じことを行います。

オプション(?)は0回または1回の出現に一致します:jg 'roommates[0].favorite_food?'は親オブジェクトとフィールド値の両方を返します。

Ad

技術的アプローチ

jsongrepは、クエリを決定性有限オートマトン(DFA)にコンパイルします。パイプラインには以下が含まれます:クエリの解析、JSONをツリーとして扱う、Glushkovのアルゴリズムを使用したNFAの構築、部分集合構成による決定化、DFA遷移を使用したDFSによる検索。これにより、入力シンボルごとにO(1)の作業で単一パスでの処理が可能になり、バックトラッキング、再帰スタック、および病的なクエリでの指数的爆発を回避します。

著者は、これがjq、jmespath、jsonpath-rustなどのツールとは根本的に異なると指摘しています。これらのツールはパス式を解釈し、各ノードでクエリを評価し、述語をチェックし、再帰的に下降します。これにより、サブツリーの再訪問や再帰的下降クエリでのワークリストの維持が発生する可能性があります。

インストールと利用可能性

crates.ioからインストール:cargo install jsongrep。このプロジェクトにインスピレーションを与えたripgrepと同様に、jsongrepはクロスプラットフォームでバイナリが利用可能であり、Rustで書かれています。

このツールは、出力がlessやsortなどのコマンドにパイプされているかどうかを検出し、デフォルトではJSONパスを省略します(--with-pathオプションで上書き可能)。

📖 Read the full source: HN LLM Tools

Ad

👀 See Also

🦀
Tools

PinchBenchがMac Studio M3 Ultra上でQwenとNemotronをランク付け:Nemotron Superがコーディングで99.2%を達成

開発者がMac Studio M3 Ultra(256GB RAM)上で6つのローカルモデルをPinchBenchでテスト。Nemotron-3-superはコーディングで99.2%とトップだが総合78.2%、Qwen3.6 35B A3Bが総合87.9%で首位。

OpenClawRadar
インタラクティブなマインドマップがClaudeツールエコシステムを可視化
Tools

インタラクティブなマインドマップがClaudeツールエコシステムを可視化

開発者がD3.jsを使用してインタラクティブなHTMLマインドマップを作成し、ClaudeのChat、Cowork、Codeツール間の機能、プラットフォームの利用可否、価格の違い、コネクタの互換性を追跡できるようにしました。

OpenClawRadar
オープンクローとクロードコードにおける永続的メモリのためのオブシディアン統合
Tools

オープンクローとクロードコードにおける永続的メモリのためのオブシディアン統合

Redditユーザーが、OpenClawとClaude CodeをObsidianボールトに接続することで、セッションを超えた永続的な長期記憶が実現する方法を実演しています。このセットアップにより、記憶、コンテキスト、プロジェクトファイル、ノートが自動的にリンクされ、必要な時にすべてのインスタンスが共有メモリにアクセスできるようになります。

OpenClawRadar
OpenClawとSave to Spotify CLIで日次ブリーフィングをパーソナルなSpotifyポッドキャストに自動化
Tools

OpenClawとSave to Spotify CLIで日次ブリーフィングをパーソナルなSpotifyポッドキャストに自動化

OpenClawは毎朝7時に実行され、Slackのスレッド、GitHub通知、カレンダーを取得し、要約してmp3に変換し、Save to Spotify CLIを使ってプライベートエピソードとしてアップロードします。Free版とPremium版で動作します。

OpenClawRadar