Tester JSONPath

Wklej dokument JSON i wpisz wyrażenie JSONPath takie jak $..book[?(@.price<10)]. Tester ocenia je względem dokumentu i pokazuje każdą pasującą wartość wraz z dokładną ścieżką każdego dopasowania. Przydatne do walidacji zapytania, które masz zamiar wkleić do skryptu lub specyfikacji API (Postman, k6, JMeter, wszystkie mówią w JSONPath).

Jak przetestować wyrażenie JSONPath

  1. 1

    Wklej dokument JSON

    Dowolny poprawny JSON: obiekt, tablica, głęboko zagnieżdżony.

  2. 2

    Wpisz wyrażenie

    Zacznij od `$` dla korzenia. Użyj `.` dla dziecka, `..` dla rekurencyjnego schodzenia, `[*]` dla symbolu wieloznacznego.

  3. 3

    Zobacz dopasowania na żywo

    Każde dopasowanie jest pokazane z jego wartością i pełną ścieżką JSONPath, podświetlone w oryginalnym dokumencie.

  4. 4

    Skopiuj wyniki

    Skopiuj dopasowania jako tablicę JSON albo skopiuj każdą pojedynczą ścieżkę do użycia w kodzie w dalszych etapach.

Referencja składni JSONPath

Wyrażenie Znaczenie
$ Element korzenia
$.store Dziecko $ o nazwie store
$["store"] To samo, forma nawiasowa
$..author Wszystkie właściwości author na dowolnej głębokości
$.store.book[*] Każda książka w sklepie
$.store.book[0] Pierwsza książka
$.store.book[-1:] Ostatnia książka
$.store.book[0:2] Pierwsze dwie książki (wycinek)
$.store.book[?(@.isbn)] Książki z właściwością isbn
$.store.book[?(@.price < 10)] Książki tańsze niż 10
$.store.book[?(@.category == "fiction")] Książki beletrystyczne
$..* Każda wartość, wszędzie

Wyrażenia filtrujące

Wyrażenia filtrujące używają @, by odwołać się do bieżącego węzła. Tester obsługuje typowe operatory ==, !=, <, >, <=, >=, &&, || oraz wyrażenie regularne =~.

$.items[?(@.qty >= 10 && @.price < 50)]

Dialekty JSONPath

Istnieje kilka implementacji JSONPath z drobnymi niezgodnościami. Ten tester podąża za oryginalną specyfikacją Goessnera i udoskonaleniami RFC 9535, które są zgodne z:

  • Jayway JsonPath (Java)
  • jsonpath-plus (JavaScript)
  • jsonpath-rw (Python)
  • podstawowymi wyrażeniami ścieżek jq

Niezgodne funkcje (jak wyrażenia skryptowe z dowolnym JS) są oznaczane w panelu błędów.

Kiedy JSONPath bije pełny parser

  • Asercje testowe: pm.expect(jsonData).to.have.jsonPath(...) z Postmana przyjmuje ścieżkę.
  • Wyciąganie konfiguracji: wyciągnij jedną wartość z ogromnej odpowiedzi API bez biblioteki.
  • Skrypty testów obciążeniowych: k6, JMeter i Gatling, wszystkie obsługują JSONPath do kontroli.
  • Kubernetes / AWS CLI: flagi --query i --jsonpath pozwalają kształtować wyjście z wiersza poleceń.

Typowe błędy

  • Używanie . na tablicy. $.users.0.name jest błędne; użyj $.users[0].name.
  • Zapominanie o .. dla głębokości. Ścieżka taka jak $.name dopasowuje tylko name najwyższego poziomu; użyj $..name dla wszystkich.
  • Mylenie JSONPath z jq. jq to nadzbiór z przepływem sterowania i transformacjami; JSONPath służy wyłącznie do wyciągania.
  • Kotwiczenie wyrażeń regularnych. =~ /foo/ dopasowuje podciągi; użyj /^foo$/ dla dokładnego dopasowania.

Najczęściej zadawane pytania

JSONPath to czysty język wyciągania, selekcja, filtrowanie, wycinanie. jq to pełny język zapytań / transformacji z przepływem sterowania, zmiennymi i funkcjami. Do prostego wyciągania JSONPath jest bardziej przenośny; do transformacji użyj jq.

Oryginalnej specyfikacji Goessnera plus udoskonaleń RFC 9535, zgodnych z Jayway JsonPath (Java) i jsonpath-plus (Node). Rozszerzenia specyficzne dla dialektu (wyrażenia skryptowe z dowolnym kodem) nie są obsługiwane.

Tak. $..book[?(@.title =~ /^Harry.*/)] dopasowuje wszystkie książki, których tytuł zaczyna się od „Harry”. Użyj ^ i $ dla zachowania pełnego dopasowania.

Tak. Zarówno JSON, jak i ewaluator JSONPath żyją w twojej przeglądarce. Twój dokument i zapytania nigdy nie opuszczają karty.

Powiązane narzędzia

Narzędzie jest dostępne w innych językach