JSONPathクエリ
Query, filter and extract data from JSON with JSONPath: $ root, .key, [0], [*] and .. recursive descent.
パス式でJSONデータを抽出・検索・フィルタリング
JSONPathクエリとは
JSONPathはJSONデータの位置を指定して抽出するためのパス式です。オブジェクト、ネストされたオブジェクト、配列から必要なフィールドをすばやく検索でき、フィルター条件を使って条件に一致する配列要素を抽出することもできます。このツールはAPIレスポンス、設定ファイル、ログデータなどのJSONドキュメントの検索に適しています。
JSONPathの基本構文
$はJSONのルートノードを表します。$.usersはルート直下のusersプロパティ、$.users[0]は配列の最初の要素、$.users[*]は配列のすべての要素、$.users[*].nameはusers配列の各要素にあるnameを取得します。$..priceは任意の階層にあるpriceというプロパティを再帰的に検索します。
配列インデックスには負数も使用でき、[-1]で配列の最後の要素を指定できます。ワイルドカード[*]を使用すると、配列内のすべての要素を一度に検索できます。
JSONPathで配列をフィルタリングする方法
フィールド値に基づいて配列要素を絞り込む場合は、[?()]フィルター式を使用できます。たとえば$.users[?(@.age > 18)]はageが18より大きいユーザーを抽出します。@は現在の配列要素を表し、条件内のプロパティは@.fieldで参照できます。
フィルター条件では==、!=、>、>=、<、<=の比較演算子に対応し、&&、||、!を使って複数の条件を組み合わせることもできます。括弧を使って条件の優先順位を調整することも可能です。たとえば$.users[?(@.age >= 18 && @.active == true)]では、18歳以上かつactiveがtrueの要素を抽出できます。
JSONPathの検索結果を見る方法
検索が完了すると、結果エリアに一致したデータとそのパスが表示されます。パスはJSONPath形式で、たとえば$.users[0].nameのように表示されるため、どのフィールドや配列要素に一致したかを確認できます。
下部には標準JSON配列形式の結果も表示され、コピーまたはJSONファイルとしてダウンロードできます。統計情報には一致件数が表示されます。一致する結果がない場合は、結果なしと明確に表示されます。ページが長くなりすぎないよう、結果カードには最大200件まで表示されますが、完全な一致結果はJSON出力に保持されます。
よく使うJSONPath式
ページにはよく使う式のボタンがあり、サンプルデータを直接検索できます。たとえば$でJSON全体、$.usersでusers、$.users[*].nameですべてのユーザー名、$..priceで任意の階層のpriceフィールドを検索できます。$.users[?(@.age > 18)]は年齢による配列フィルタリングに使用できます。
これらの式はフィールド名、配列インデックス、フィルター条件を変更してテンプレートとして利用でき、JSONPath構文の学習や実際のJSONデータの検索に役立ちます。
ローカルJSONファイルを検索する方法
ファイルアップロードタブに切り替え、.jsonファイルをページにドラッグするか、ファイル選択から指定できます。ファイルはブラウザ内で直接読み込まれ、1ファイルあたりの上限は10 MBです。ファイルの読み込み後、現在のJSONPath式を使って自動的に検索が実行されます。
JSONPathの検索結果がない場合
式にエラーがなくても結果が空の場合は、まずJSONの実際の階層とデータ型を確認してください。たとえばusersが配列の場合、通常は$.users[*]や$.users[0]を使用し、配列をオブジェクトとして$.users.nameのように扱うことはできません。ネストされた階層から同名フィールドを検索する場合は、$..nameを試してください。
フィルター式で結果がない場合は、フィールド名、フィールド型、比較条件が一致しているかを確認してください。たとえば数値18と文字列\"18\"では比較結果が異なる場合があります。式自体に構文エラーがある場合は、$、ドット、角括弧、?()が正しく閉じられているか確認してください。
このツールが対応するJSONPathの範囲
現在、ルートノード$、プロパティアクセス、配列インデックス、負数インデックス、ワイルドカード[*]、再帰下降..、[?()]フィルター式に対応しています。フィルター条件では==、!=、>、>=、<、<=、&&、||、!、括弧を使用できます。JSONPath標準に含まれるすべての拡張構文に対応しているわけではありません。
JSONPathはどう書きますか?
JSONPathはパス式を使ってJSONデータを指定します。$はルートノード、.keyはプロパティ、[0]は配列要素、[*]はすべての要素を表し、$..keyでは任意の階層にある同名プロパティを再帰的に検索できます。
配列を絞り込む場合は、[?(@.age > 18)]のようなフィルター式を使用してフィールド値に基づいて要素を選択し、&&、||、!で複数の条件を組み合わせられます。
- $、.key、配列インデックス[0]、負数インデックス、ワイルドカード[*]、再帰下降$..keyに対応
- [?()]フィルター式に対応し、フィールド値でJSON配列の要素を絞り込めます
- フィルター条件では==、!=、>、>=、<、<=、&&、||、!を組み合わせて使用できます
- 一致したパスと値を表示し、標準JSON配列としてコピーまたはダウンロードできます
- JSONファイルは1ファイル10 MBまで対応し、読み込み後に現在の式で自動検索します
- すべてブラウザ内で処理し、入力内容はサーバーにアップロードされません