JSONPathテスター
JSONを貼り付けてJSONPath式をインタラクティブにテストします。マッチング結果をリアルタイムで表示し、すぐに始められるサンプルパスを提供します。
入力
出力
Readme
JSONPathとは?
JSONPathはJSONのクエリ言語で、XMLに対するXPathのような役割を果たします。パス式を使用してJSON構造をナビゲートしてデータを抽出できます。JSONPath式は$で始まり、これはドキュメントのルートを表します。ドット記法(.key)またはブラケット記法(['key'])を使用してオブジェクトをトラバースし、[index]を使用して配列要素にアクセスします。
JSONPathは2007年にStefan Gössnerによって最初に説明され、その後、API、テストフレームワーク、データ処理パイプラインで広く使用される標準となりました。JavaScript、Python、Java、PostgreSQLやMySQLなどのデータベースを含む多くの言語とツールでサポートされています。
ツールの説明
このツールを使用すると、有効なJSONドキュメントを貼り付けて、JSONPath式を記述してクエリを実行できます。結果は入力時にリアルタイムで表示され、すべての一致する値がフォーマットされたJSON配列として表示されます。一致数は別途表示されるため、選択されたノード数をすばやく確認できます。
例
入力JSON:
{
"store": {
"book": [
{ "title": "Moby Dick", "price": 8.99, "category": "fiction" },
{ "title": "War and Peace", "price": 12.5, "category": "fiction" },
{
"title": "A Brief History of Time",
"price": 7.99,
"category": "science"
}
]
}
}| 式 | 結果 |
|---|---|
$.store.book[*].title |
すべての書籍のタイトル |
$.store.book[0] |
最初の書籍オブジェクト |
$.store.book[?(@.price < 10)] |
$10より安い書籍 |
$.store.book[?(@.category == "fiction")] |
フィクション書籍のみ |
$..price |
ドキュメント内のすべての価格値 |
機能
- リアルタイム評価 — 式を入力するか、JSONを編集すると結果が更新されます
- 専用フィールドに一致数を表示
- 式フィールドのコピーボタンで素早く再利用可能
- クリップボードからJSONまたは式をすばやく挿入するペーストボタン
- 無効なJSONまたは形式が正しくないパス式のエラー報告
動作方法
JSONPath式はjsonpath-plusライブラリを使用して解析されたJSONに対して評価されます。$シンボルはルート要素を参照します。子ノードは.または[]でアクセスされ、ワイルドカードは*で、再帰的下降は..で、フィルターは[?(...)]でアクセスされます。結果は常に一致する値の配列であり、1つの一致のみが見つかった場合でも配列です。
オプションの説明
| 構文 | 意味 |
|---|---|
$ |
ルート要素 |
.keyまたは['key'] |
子プロパティ |
[*] |
すべての配列要素 |
[0] |
最初の配列要素(ゼロインデックス) |
[-1] |
最後の配列要素 |
[0,2] |
インデックス0と2の要素 |
[0:2] |
インデックス0から1の要素(スライス) |
..key |
再帰的下降 — 任意の深さでkeyを検索 |
[?(@.price > 5)] |
フィルター — priceが5より大きい要素 |
@ |
現在のノード(フィルター式内で使用) |
ユースケース
- API開発 — RESTクライアント、テストスイート、またはデータマッピングツールで使用されるJSONPathセレクターがAPI応答から期待されるフィールドを抽出することを確認します
- データ変換 — 変換スクリプトを記述する前に、ネストされたJSONペイロードから抽出する値を特定します
- JSONPathの学習 — パス構文を対話的に試して、
..、[*]、[?()]などの演算子が実際のデータでどのように動作するかを理解します
ヒント
$..*を使用してドキュメント全体のすべての値を取得します — 未知のJSON構造を探索するのに便利です。- フィルター式は比較(
==、!=、<、>、<=、>=)をサポートし、ネストされたプロパティを参照できます:[?(@.author.name == "Rees")]。 - 深さに関係なくプロパティを一致させるには、
..再帰的下降を使用します:$..titleはドキュメント内のすべてのtitleフィールドを検索します。