JSONPath-test
Test JSONPath-udtryk på din egen JSON i browseren. Filtre, udsnit, rekursiv nedstigning, stier og JSON Pointers, med færdige eksempler.
Sådan tester du et JSONPath-udtryk
- Indsæt din JSON i JSON-data, eller klik på Indlæs eksempeldata for at bruge det klassiske eksempel med en boghandel.
- Skriv et udtryk i JSONPath-udtryk, eller vælg et under Eksempler.
- Resultatet opdateres, mens du skriver. Kør forespørgsel kører det igen. Statuslinjen angiver antallet af match.
- Brug Vis til at skifte mellem Værdier, Stier, JSON Pointers og Stier og værdier, og kopiér derefter resultatet.
JSONPath-syntaks i korte træk
| Syntaks | Betydning | Eksempel |
|---|---|---|
$ |
dokumentets rod | $ |
.name eller ['name'] |
et underordnet element | $.store.bicycle |
* |
alle underordnede elementer | $.store.* |
.. |
rekursiv nedstigning, på ethvert niveau | $..author |
[n] |
listeindeks, fra 0 | $..book[2] |
[start:end:step] |
udsnit. Negative tal tæller fra slutningen | $..book[-1:] |
[a,b] |
union | $..book[0,1] |
[?(expr)] |
filter | $..book[?(@.price < 10)] |
^ |
forælderen til hvert match | $..book[?(@.price > 20)]^ |
~ |
egenskabsnavnet i stedet for værdien | $.store.*~ |
Resultaterne returneres i dokumentets rækkefølge. Stier giver normaliserede stier som $['store']['book'][0]['title'], og JSON Pointers giver RFC 6901-formen /store/book/0/title, som er praktisk til JSON Patch eller til fejlstierne fra JSON Schema-validatorer.
Filterudtryk: hvad der understøttes
Filtre evalueres med jsonpath-plus i sikker tilstand: Udtrykket parses og fortolkes af en lille evaluator og sendes aldrig til eval eller new Function. Inde i [?( … )] kan du bruge:
@for det aktuelle element,@.fieldog@['field']for dets medlemmer og@rootfor hele dokumentet ($er ikke tilgængelig inde i et filter);- sammenligninger
==,!=,===,!==,<,<=,>,>=; - logik
&&,||,!, regning+ - * / %og den betingede operatora ? b : c; - literaler for strenge, tal,
true,false,nullog regulære udtryk; - værdiernes egne metoder, for eksempel
@.title.startsWith('S'),@.tags.includes('new')eller@.title.match(/lord/i); @property(det aktuelle elements nøgle eller indeks),@parentog@path(dets normaliserede sti) i jsonpath-plus-stil.
Adgang til constructor, __proto__ og Function-konstruktøren er blokeret. Hvis et filter fejler på ét element, for eksempel @.isbn.startsWith('0') på en bog uden isbn, passer det element simpelthen ikke. En syntaksfejl i udtrykket meldes. Filtre skrevet på RFC 9535-måden, [?@.price < 10] uden parenteser, accepteres og læses som [?(@.price < 10)]. RFC 9535-funktioner som length(), count(), match() og search() er ikke tilgængelige: Brug i stedet JavaScript-metoder som @.name.length.
Typevælgere fra jsonpath-plus virker også sidst i en sti: $..*@number() returnerer alle tal, og @string(), @boolean(), @array(), @object(), @null() og @integer() gør det samme for andre typer. Husk, at tal i udtryk og JSON skrives med punktum som decimaltegn (8.95).
Ofte stillede spørgsmål
Bliver min JSON sendt til en server?
Nej. Parsing og evaluering sker i din browser, og dine data forlader aldrig din computer.
Hvorfor giver mit filter ingenting?
Tjek, at stien før filteret vælger en liste eller et objekt: $.store.book[?(@.price < 10)] filtrerer bøgerne, mens $.store[?(@.price < 10)] ser på book og bicycle. En egenskab, der mangler på et element, er undefined, så sammenligninger med den er falske.
Hvad er forskellen på `==` og `===`?
Som i JavaScript konverterer == typer ("10" == 10 er sandt), mens === sammenligner type og værdi.
Hvorfor er resultatet begrænset?
Kun de første 10.000 match skrives i resultatet, så siden forbliver responsiv. Statuslinjen angiver det fulde antal.
Er JSONPath standardiseret?
Ja, siden 2024 med RFC 9535. Implementeringerne er stadig forskellige, især i filtre. Dette værktøj følger jsonpath-plus, syntaksen i Stefan Goessners oprindelige JSONPath.
Relaterede værktøjer
- JSON-formatering og -validering Gratis JSON-formatering og -validering, der gør JSON pæn, minificerer og tjekker den i din browser, med syntaksfejl angivet med linje og kolonne.
- JSON Schema-validator Valider et JSON-dokument mod et JSON Schema i din browser. Hver fejl vises med sin instanssti, sit nøgleord og sin schema-sti. Fejlmeddelelserne er på engelsk.
- Regex-tester Test regulære udtryk i JavaScript live med fremhævede match, indfangende grupper, erstatning og en forklaring i klart sprog af hvert led i mønsteret.