JSONPath-testare
Testa JSONPath-uttryck på din egen JSON i webbläsaren. Filter, slices, rekursiv sökning, sökvägar och JSON Pointers, med färdiga exempel.
Så testar du ett JSONPath-uttryck
- Klistra in din JSON i JSON-data, eller klicka på Ladda exempeldata för att använda det klassiska bokhandelsexemplet.
- Skriv ett uttryck i JSONPath-uttryck, eller välj ett under Exempel.
- Resultatet uppdateras medan du skriver, och Kör frågan kör det igen. Statusraden visar antalet träffar.
- Använd Visa för att växla mellan Värden, Sökvägar, JSON Pointers och Sökvägar och värden, och kopiera sedan resultatet.
JSONPath-syntaxen i korthet
| Syntax | Betydelse | Exempel |
|---|---|---|
$ |
dokumentets rot | $ |
.name eller ['name'] |
ett barn | $.store.bicycle |
* |
alla barn | $.store.* |
.. |
rekursiv sökning, på valfritt djup | $..author |
[n] |
index i en lista, från 0 | $..book[2] |
[start:end:step] |
slice, negativa tal räknas från slutet | $..book[-1:] |
[a,b] |
union | $..book[0,1] |
[?(expr)] |
filter | $..book[?(@.price < 10)] |
^ |
föräldern till varje träff | $..book[?(@.price > 20)]^ |
~ |
egenskapsnamnet i stället för värdet | $.store.*~ |
Resultaten returneras i dokumentets ordning. Sökvägar ger normaliserade sökvägar som $['store']['book'][0]['title'], och JSON Pointers ger formen enligt RFC 6901, /store/book/0/title, praktiskt för JSON Patch eller för felsökvägarna från JSON Schema-validerare. Tänk på att tal i JSON och i filter alltid skrivs med decimalpunkt, som 8.95.
Filteruttryck: vad som stöds
Filter utvärderas med jsonpath-plus i säkert läge: uttrycket tolkas och körs av en liten egen utvärderare och skickas aldrig till eval eller new Function. Inuti [?( … )] kan du använda:
@för det aktuella elementet,@.fieldoch@['field']för dess medlemmar, och@rootför hela dokumentet ($finns inte inuti ett filter);- jämförelser
==,!=,===,!==,<,<=,>,>=; - logik
&&,||,!, aritmetik+ - * / %och villkorsoperatorna ? b : c; - literaler för strängar, tal,
true,false,nulloch reguljära uttryck; - värdenas egna metoder, till exempel
@.title.startsWith('S'),@.tags.includes('new')eller@.title.match(/lord/i); @property(nyckeln eller indexet för det aktuella elementet),@parentoch@path(dess normaliserade sökväg), i jsonpath-plus-stil.
Åtkomst till constructor, __proto__ och konstruktorn Function är blockerad. Om ett filter misslyckas på ett element, till exempel @.isbn.startsWith('0') på en bok utan isbn, matchar det elementet helt enkelt inte. Ett syntaxfel i uttrycket rapporteras däremot. Filter skrivna enligt RFC 9535, [?@.price < 10] utan parenteser, accepteras och läses som [?(@.price < 10)]. Funktionerna i RFC 9535, som length(), count(), match() och search(), finns inte: använd JavaScript-metoder som @.name.length i stället.
Typselektorer från jsonpath-plus fungerar också i slutet av en sökväg: $..*@number() returnerar alla tal, och @string(), @boolean(), @array(), @object(), @null() och @integer() gör detsamma för andra typer.
Vanliga frågor
Skickas min JSON till en server?
Nej. Tolkning och utvärdering sker i din webbläsare, och dina data lämnar aldrig datorn.
Varför returnerar mitt filter ingenting?
Kontrollera att sökvägen före filtret väljer en lista eller ett objekt: $.store.book[?(@.price < 10)] filtrerar böckerna, medan $.store[?(@.price < 10)] tittar på book och bicycle. En egenskap som saknas i ett element är undefined, så jämförelser med den blir falska.
Vad är skillnaden mellan `==` och `===`?
Precis som i JavaScript konverterar == typer ("10" == 10 är sant), medan === jämför både typ och värde.
Varför är resultatet begränsat?
Bara de första 10 000 träffarna skrivs ut i resultatet, för att sidan ska fortsätta svara snabbt. Statusraden visar det totala antalet.
Är JSONPath standardiserat?
Ja, sedan 2024, genom RFC 9535. Implementationerna skiljer sig fortfarande åt, särskilt när det gäller filter. Verktyget följer jsonpath-plus, syntaxen från Stefan Goessners ursprungliga JSONPath.
Relaterade verktyg
- JSON-formaterare och validerare Gratis JSON-formaterare och validerare som snyggar till, minifierar och kontrollerar JSON i webbläsaren, med syntaxfel angivna med rad och kolumn.
- JSON Schema-validerare Validera ett JSON-dokument mot ett JSON Schema i webbläsaren. Varje fel listas med instanssökväg, nyckelord och schemasökväg.
- Regex-testare Testa reguljära uttryck i JavaScript live med markerade träffar, fångande grupper, ersättning och en förklaring av varje del av mönstret.