このツールについて
JSONPath は、ほとんどの API テストフレームワークがレスポンスから値を取り出す方法です。REST Assured の JsonPath、Postman のスクリプト、Karate、多くのアサーションライブラリが同じ考え方を使っています。実際のレスポンスに対して式を書けば、失敗するテスト実行を 1 回分減らせます。このテスターはスクリプト評価を無効にした jsonpath-plus を使い、[?(@.price < 10)] のようなフィルター式は小さな組み込みインタープリターで評価するため、貼り付けた内容がコードとして実行されることはありません。一致した値はすべて正規化されたパスつきで表示され、値がどこから来たのかが正確にわかります。
使い方
- 左のパネルに JSON レスポンスを貼り付けるか、「Load sample」(サンプルを読み込む)で定番の書店(bookstore)ドキュメントを読み込みます。
- $ で始まる式を入力します。入力に合わせて結果が更新されます。
- 値、パス、またはその両方のどれを表示するかを選び、結果をコピーします。
- チートシートの「Try」(試す)ボタンで、再帰下降、スライス、ユニオン、フィルターの動作を確認できます。
JSONPath テスター のよくある質問
ここでは動く式が REST Assured で動かないのはなぜですか?
REST Assured は Goessner の JSONPath ではなく Groovy の GPath を使っています。GPath の「store.book.findAll { it.price < 10 }.title」は、ここでの「$.store.book[?(@.price < 10)].title」と同じ意味です。単純なドット区切りのパスは両者で同じですが、フィルターやワイルドカードは構文が異なります。
どのフィルター構文に対応していますか?
フィルターでは現在の要素(@)またはルート($)を参照し、== != < <= > >= で比較し、&& || ! で組み合わせ、文字列、数値、true、false、null を使えます。[(@.length-1)] のようなスクリプト式や JavaScript のメソッド呼び出しは意図的に実行しません。最後の要素にはスライス [-1:] を使ってください。
キーが存在するのに一致しないのはなぜですか?
よくある原因は、大文字・小文字の違い(userId と userid)、値が配列の中にあるのに [*] を付けていない、ダッシュやスペースを含むキーで $['first-name'] のようなブラケット記法が必要、といったものです。