JSONPath tester
Testiraj JSONPath izraze na sopstvenom JSON-u u pregledaču. Filteri, isečci, rekurzivno spuštanje, putanje i JSON Pointeri, uz gotove primere.
Kako da testiraš JSONPath izraz
- Nalepi JSON u JSON podaci ili klikni Učitaj probne podatke da koristiš klasičan primer sa knjižarom.
- Upiši izraz u JSONPath izraz ili izaberi jedan iz Primeri.
- Rezultat se osvežava dok kucaš; Pokreni upit ga izvršava ponovo. Statusni red navodi broj poklapanja.
- Pomoću Prikaži prebacuješ između Vrednosti, Putanje, JSON Pointeri i Putanje i vrednosti, pa kopiraš rezultat.
JSONPath sintaksa ukratko
| Sintaksa | Značenje | Primer |
|---|---|---|
$ |
koren dokumenta | $ |
.name ili ['name'] |
potomak | $.store.bicycle |
* |
svaki potomak | $.store.* |
.. |
rekurzivno spuštanje, na bilo kojoj dubini | $..author |
[n] |
indeks niza, od 0 | $..book[2] |
[start:end:step] |
isečak; negativni brojevi broje od kraja | $..book[-1:] |
[a,b] |
unija | $..book[0,1] |
[?(expr)] |
filter | $..book[?(@.price < 10)] |
^ |
roditelj svakog poklapanja | $..book[?(@.price > 20)]^ |
~ |
naziv svojstva umesto vrednosti | $.store.*~ |
Rezultati se vraćaju redosledom iz dokumenta. Putanje daje normalizovane putanje poput $['store']['book'][0]['title'], a JSON Pointeri daju oblik iz RFC 6901 /store/book/0/title, koristan za JSON Patch ili za putanje grešaka kod JSON Schema validatora.
Izrazi filtera: šta je podržano
Filteri se izračunavaju pomoću jsonpath-plus u bezbednom režimu: izraz parsira i tumači mali evaluator, a nikada se ne prosleđuje eval ni new Function. Unutar [?( … )] možeš da koristiš:
@za trenutnu stavku,@.fieldi@['field']za njene članove,@rootza ceo dokument ($nije dostupan unutar filtera);- poređenja
==,!=,===,!==,<,<=,>,>=; - logiku
&&,||,!, aritmetiku+ - * / %i ternarni operatora ? b : c; - literale stringova, brojeva,
true,false,nulli regularnih izraza; - metode samih vrednosti, na primer
@.title.startsWith('S'),@.tags.includes('new')ili@.title.match(/lord/i); @property(ključ ili indeks trenutne stavke),@parenti@path(njena normalizovana putanja), u jsonpath-plus stilu.
Pristup constructor, __proto__ i konstruktoru Function je blokiran. Ako filter ne uspe na jednoj stavci, na primer @.isbn.startsWith('0') na knjizi bez isbn, ta stavka se jednostavno ne poklapa; sintaksna greška u izrazu se prijavljuje. Filteri napisani na RFC 9535 način, [?@.price < 10] bez zagrada, prihvataju se i čitaju kao [?(@.price < 10)]. RFC 9535 funkcije poput length(), count(), match() i search() nisu dostupne: umesto njih koristi JavaScript metode poput @.name.length.
Selektori tipova iz jsonpath-plus takođe rade na kraju putanje: $..*@number() vraća svaki broj, a @string(), @boolean(), @array(), @object(), @null() i @integer() rade isto za druge tipove.
Česta pitanja
Da li se moj JSON šalje na server?
Ne. Parsiranje i izračunavanje odvijaju se u tvom pregledaču, a tvoji podaci nikada ne napuštaju računar.
Zašto moj filter ne vraća ništa?
Proveri da li putanja pre filtera bira niz ili objekat: $.store.book[?(@.price < 10)] filtrira knjige, dok $.store[?(@.price < 10)] gleda book i bicycle. Svojstvo koje nedostaje u stavci je undefined, pa su poređenja s njim netačna.
Koja je razlika između `==` i `===`?
Kao u JavaScriptu, == konvertuje tipove ("10" == 10 je tačno), dok === poredi tip i vrednost.
Zašto je izlaz ograničen?
U rezultat se upisuje samo prvih 10.000 poklapanja da stranica ostane brza; statusni red daje potpun broj.
Da li je JSONPath standardizovan?
Da, od 2024, kroz RFC 9535. Implementacije se i dalje razlikuju, naročito u filterima; ovaj alat sledi jsonpath-plus, sintaksu originalnog JSONPath-a Stefana Goessnera.
Srodni alati
- JSON formater i validator Besplatan JSON formater i validator koji sređuje, minifikuje i proverava JSON u pregledaču, sa sintaksnim greškama prijavljenim po redu i koloni.
- JSON Schema validator Proveri JSON dokument prema JSON šemi u pregledaču. Svaka greška se navodi sa putanjom instance, ključnom rečju i putanjom u šemi.
- Regex tester Testiraj JavaScript regularne izraze uživo: istaknuta poklapanja, grupe za hvatanje, zamena i objašnjenje svakog tokena običnim jezikom.