Do czego służy
JSONPath to język zapytań dla JSON, podobny do XPath dla XML. Zapytanie takie jak $.store.book[*].title przechodzi przez dokument i wybiera potrzebne wartości. To narzędzie wykonuje wyrażenie JSONPath na wklejonym JSON i wypisuje wszystkie dopasowania jako tablicę JSON: znalezione wartości, ich znormalizowane ścieżki (np. $['store']['book'][0]['title']) albo jedno i drugie.
Narzędzie jest zgodne z RFC 9535, standardem IETF opublikowanym w 2024 roku, więc wyniki zgadzają się z nowoczesnymi bibliotekami dla JavaScriptu, Javy, Pythona, Go i innych języków. Przydaje się do sprawdzenia zapytania przed wpisaniem go do kodu, do ustalenia, dlaczego filtr nic nie zwraca, albo do wyciągnięcia kilku pól z dużej odpowiedzi API.
Jak używać
- Wklej JSON w pole JSON, wgraj plik
.jsonlub kliknij Przykład, aby wczytać klasyczny dokument księgarni. - Wpisz zapytanie w polu Wyrażenie JSONPath. Dopasowania aktualizują się w trakcie pisania.
- Wybierz, co Pokaż: wartości, ścieżki lub pary ścieżka/wartość.
- Skopiuj lub pobierz wynik. Przy błędzie składni podawany jest znak, na którym analiza się zatrzymała.
Ściągawka ze składni
| Wyrażenie | Znaczenie |
|---|---|
$ | Korzeń dokumentu |
.name lub ['name'] | Członek obiektu |
[0], [-1] | Element tablicy (ujemne liczone od końca) |
[1:3], [::2] | Wycinek: początek, koniec (bez niego) i krok |
* | Wszyscy członkowie lub elementy |
..name | name na dowolnej głębokości |
[?@.price < 10] | Dzieci, dla których filtr jest prawdziwy; @ to bieżący element |
Filtry mogą łączyć warunki przez &&, || i !, porównywać z innymi częściami dokumentu przez $ i wywoływać funkcje: length(@.tags) > 2, count(@.items[*]) == 0, match(@.code, '[A-Z]{3}'), gdy cały ciąg ma pasować do wyrażenia regularnego, oraz search(@.title, 'Ring') dla dopasowania w dowolnym miejscu.
Przykład
Dla przykładowej księgarni to zapytanie wybiera tytuły książek tańszych niż 10:
$.store.book[?@.price < 10].title
i zwraca:
["Sayings of the Century", "Moby Dick"]
Zmień je na $..book[?@.isbn].author, aby wypisać autorów książek z numerem ISBN, albo na $..price, aby zebrać wszystkie ceny w sklepie, łącznie z ceną roweru.
FAQ
› Jaka składnia JSONPath jest obsługiwana?
Standardowa składnia RFC 9535: nazwy członków z kropką i w nawiasach kwadratowych, symbole wieloznaczne, indeksy tablic (także ujemne), wycinki, wyszukiwanie na dowolnej głębokości przez .., filtry z porównaniami i && || ! oraz funkcje length(), count(), match(), search() i value(). Starsza forma ?(@.price < 10) też działa, bo nawiasy tylko grupują.
› Dlaczego moje zapytanie zwraca pustą tablicę?
Pusta tablica oznacza, że zapytanie jest poprawne, ale nic nie pasuje. Sprawdź nazwy członków (wielkość liter ma znaczenie) i to, czy wartość jest tablicą, czy obiektem. Szerokie zapytanie, np. $..*, z opcją Pokaż ustawioną na Ścieżki pokaże zawartość dokumentu.
› Czy mogę używać wyrażeń skryptowych, takich jak [(@.length-1)]?
Nie. Wyrażenia skryptowe wykonują dowolny kod i nie należą do standardu. Użyj ujemnego indeksu: [-1] to ostatni element, a [-2:] dwa ostatnie.
› Czy mój JSON jest wysyłany na serwer?
Nie. Zapytanie jest analizowane i wykonywane w przeglądarce przez kod strony; nic nie jest przesyłane.