JSONPath テスター

JSONドキュメントを貼り付け、$..book[?(@.price<10)]のようなJSONPath式を入力します。テストツールはこの式をドキュメントと照合し、一致するすべての値およびその正確なパスを表示します。スクリプトやAPI仕様に挿入しようとしているクエリの検証に非常に役立ちます(Postman、k6、JMeterなどはすべてJSONPathに対応しています)。

JSONPath式のテスト方法

  1. 1

    JSONドキュメントを貼り付けます

    有効なすべてのJSON形式(オブジェクト、配列、深層ネスト付き)

  2. 2

    式を入力してください

    ルートには`$`から開始します。子要素には`.`、再帰的降下には`..`、ワイルドカードには`[*]`を使用します。

  3. 3

    一致をリアルタイムで確認

    各一致は、元のドキュメント内でハイライトされた値と完全なJSONPathとともに表示されます。

  4. 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評価器の両方がブラウザ内で動作します。ドキュメントやクエリがタブの外に出ることはありません。

関連ツール

このツールは他の言語でも利用できます