JSONPath テスター
JSONドキュメントを貼り付け、$..book[?(@.price<10)]のようなJSONPath式を入力します。テストツールはこの式をドキュメントと照合し、一致するすべての値およびその正確なパスを表示します。スクリプトやAPI仕様に挿入しようとしているクエリの検証に非常に役立ちます(Postman、k6、JMeterなどはすべてJSONPathに対応しています)。
JSONPath式のテスト方法
-
1
JSONドキュメントを貼り付けます
有効なすべてのJSON形式(オブジェクト、配列、深層ネスト付き)
-
2
式を入力してください
ルートには`$`から開始します。子要素には`.`、再帰的降下には`..`、ワイルドカードには`[*]`を使用します。
-
3
一致をリアルタイムで確認
各一致は、元のドキュメント内でハイライトされた値と完全なJSONPathとともに表示されます。
-
4
結果をコピーします
マッチをJSON配列としてコピーするか、または各個別のパスを下流のコードで使用するためにコピーします。
JSONPathの構文参照
| 式 | 意味 |
|---|---|
$ |
ルート要素 |
$.store |
store という名前の $ の子 |
$["store"] |
同じ、ブラケット記法 |
$..author |
任意の深さにあるすべてのauthorプロパティ |
$.store.book[*] |
店内のすべての書籍 |
$.store.book[0] |
最初の書籍 |
$.store.book[-1:] |
最後の書籍 |
$.store.book[0:2] |
最初の2冊(スライス) |
$.store.book[?(@.isbn)] |
isbnプロパティを持つ書籍 |
$.store.book[?(@.price < 10)] |
価格が10未満の書籍 |
$.store.book[?(@.category == "fiction")] |
フィクションの書籍 |
$..* |
すべての値、あらゆる場所で |
フィルター式
フィルター式では、現在のノードを指すために@を使用します。テストツールは、一般的な演算子(==、!=、<、>、<=、>=、&&、||)および正規表現(regex)=~をサポートしています。
$.items[?(@.qty >= 10 && @.price < 50)]
JSONPathの方言
若干の互換性に欠けるいくつかのJSONPath実装が存在します。本テストツールは、Goessnerのオリジナル仕様およびRFC 9535で示された改良点を基にしており、以下の規格と互換性があります:
- JaywayJsonPath(Java)
- jsonpath-plus(JavaScript)
- jsonpath-rw(Python)
- jq基本パス表現
互換性のない機能(例えば任意のJSを含むスクリプト式など)はエラーペインにマークされます。
JSONPathが完全なパーサを上回る場合
- テストアサーション:Postmanの
pm.expect(jsonData).to.have.jsonPath(...)はパスを指定します。 - 設定の抽出:ライブラリを使用せずに、大規模なAPI応答から単一の値を抽出する。
- ロードテストスクリプト:k6、JMeterおよびGatlingはすべて検証用にJSONPathをサポートしています。
- Kubernetes/AWS CLI:
--queryおよび--jsonpathフラグを使用すると、コマンドラインからの出力内容を制御できます。
よくある誤り
- アレイ上で
.を使用しています。$.users.0.nameは間違っています。$.users[0].nameをご使用ください。 - 深さに関する
..を忘れていました。$.nameのようなパスは上位レベルのnameのみにマッチします。すべてのケースでは$..nameを使用してください。 - JSONPathとjqを混同する。 jqは制御フローや変換機能を備えた超集合であるのに対し、JSONPathは純粋にデータ抽出用である。
- Regexアンカリング。
=~ /foo/は部分文字列と一致します;完全一致の場合は/^foo$/を使用してください。
よくある質問
JSONPathは選択・フィルター・スライシングを実現する純粋な抽出言語です。一方、jqは制御フロー、変数および関数を備えた完全なクエリ/変換言語です。シンプルなデータ抽出にはJSONPathがより汎用的ですが、変換処理にはjqを使用します。
Goessnerのオリジナル仕様に加え、RFC 9535による改良が施されており、JaywayJsonPath(Java)およびjsonpath-plus(Node)と互換性があります。方言固有の拡張機能(任意のコードを含むスクリプト式)はサポートされていません。
はい。$..book[?(@.title =~ /^Harry.*/)]はタイトルが「Harry」で始まるすべての書籍に一致します。完全一致の処理には^および$を使用してください。
はい。JSONとJSONPath評価器の両方がブラウザ内で動作します。ドキュメントやクエリがタブの外に出ることはありません。
関連ツール
ASCII表リファレンス
0から127までの完全なASCII表です。NUL、LF、DELなどの制御コードを含め、各文字の10進数、16進数、8進数、2進数、HTML数値文字参照を表示します。
HTML文字参照
HTMLエンティティの検索可能なリスト、その名称コードおよび数値コード、および特殊文字や記号のワンクリックコピー機能を提供します。
キーボードショートカット一覧
macOS、Windows、Linux向けに、VS Code、Chrome、GNU Readlineを使うBashの公式資料に基づく既定ショートカットを検索できます。
EditorConfig ジェネレーター
インデントのスタイルとサイズ、改行コード、文字コード、空白ルールを指定して .editorconfig ファイルを生成し、IDE やエディタをまたいで書式を統一できます。
メールアドレス検証ツール
メールアドレスを検証します。RFC 5322構文チェック、MXレコードのライブ確認に加え、ローカル部、ドメイン、長さの詳細を表示します。メールは送信されません。
Markdownチートシート
見出し、リスト、表、コード、リンク、画像、GFM構文を、実際のプレビューとコピーできる例で確認できる実用的なMarkdownリファレンスです。
このツールは他の言語でも利用できます
- Testeur JSONPath [FR]
- JSONPath-testare [SV]
- เครื่องมือทดสอบ JSON Path [TH]
- أداة اختبار مسارات JSON (JSONPath) [AR]
- JSON Path Tester [ID]
- Công cụ kiểm thử JSONPath [VI]
- JSONPath 테스터 [KO]
- JSONPath-Tester [DE]
- Probador de JSONPath [ES]
- JSON Path Tester [NL]
- Tester JSONPath [PL]
- Testador de JSONPath [PT]
- JSONPath Tester [RU]
- JSONPath Test Aracı [TR]
- JSON路径测试器 [ZH]
- JSONPath Tester [EN]
- Tester JSONPath [IT]