Tester JSONPath
Odpytuj JSON wyrażeniami JSONPath i zobacz każde dopasowanie wraz ze ścieżką
O tym narzędziu
Testuj wyrażenia JSONPath na własnym JSON-ie i oglądaj każde trafienie razem z jego wartością i konkretną ścieżką. Obsługiwana jest składnia pokrywająca codzienne zastosowania: notacja kropkowa i nawiasowa, indeksy tablic (także ujemne), symbole wieloznaczne, unie (['a','b']) i zejście rekurencyjne ($..price).
Ścieżka wypisywana przy każdym trafieniu to po cichu najużyteczniejsza część: zapytaj $..id o głęboki dokument, a każdy wynik powie Ci dokładnie, gdzie mieszka ($.data.items[3].id), gotowy do wklejenia w kod. Zamienia „gdzieś w tym worku danych” w konkretny adres.
Wyrażenia filtrujące ([?(@.price < 10)]) nie są jeszcze zaimplementowane — narzędzie mówi to wprost, zamiast zwracać błędne wyniki. Do ekstrakcji strukturalnej, czyli większości zastosowań JSONPath, wszystko działa.
Często zadawane pytania
- Czym różni się $.a.b od $..b?
- $.a.b podąża jedną konkretną trasą: klucz a w korzeniu, a w nim klucz b. $..b (zejście rekurencyjne) znajduje każde b w dokumencie, na dowolnej głębokości. Zejście rekurencyjne jest potężne, ale bywa zaskakujące — dopasuje też klucze b zagnieżdżone w miejscach, o których nie pomyślałeś.
- Jak dostać się do kluczy ze spacjami albo myślnikami?
- Notacją nawiasową z cudzysłowami: $['my key'] albo $.data['content-type']. Notacja kropkowa działa tylko dla kluczy będących poprawnymi nazwami identyfikatorów.
- Czy ujemne indeksy tablic działają?
- Tak — [-1] to ostatni element, [-2] przedostatni, zgodnie z konwencją spopularyzowaną przez Pythona i przyjętą w RFC 9535. [0] pozostaje pierwszym elementem.
- Czy JSONPath jest ustandaryzowany?
- Od 2024 roku tak — RFC 9535 definiuje składnię i semantykę. Implementacje napisane wcześniej różnią się w przypadkach brzegowych (zwłaszcza przy filtrach i uniach), więc to samo wyrażenie może działać inaczej w różnych bibliotekach; testuj na tej, z którą wdrażasz.