Wat het doet
JSONPath is een querytaal voor JSON, vergelijkbaar met XPath voor XML. Een query als $.store.book[*].title loopt door een document en selecteert de waarden die je nodig hebt. Deze evaluator voert een JSONPath-expressie uit op de JSON die je plakt en toont elk resultaat in een JSON-array: de gevonden waarden, hun genormaliseerde paden (bijvoorbeeld $['store']['book'][0]['title']) of allebei.
Hij volgt RFC 9535, de IETF-standaard uit 2024, dus de resultaten komen overeen met moderne bibliotheken in JavaScript, Java, Python, Go en andere talen. Gebruik hem om een query uit te proberen voordat je hem in code zet, om uit te zoeken waarom een filter niets oplevert of om een paar velden uit een groot API-antwoord te halen.
Zo gebruik je het
- Plak JSON in het vak JSON, upload een
.json-bestand of klik op Voorbeeld om het klassieke boekwinkeldocument te laden. - Typ een query in JSONPath-expressie. De resultaten worden tijdens het typen bijgewerkt.
- Kies bij Tonen: waarden, paden of pad/waarde-paren.
- Kopieer of download het resultaat. Bij een syntaxfout wordt het teken genoemd waar het parsen misging.
Spiekbriefje syntaxis
| Expressie | Betekenis |
|---|---|
$ | De root van het document |
.name of ['name'] | Een lid van een object |
[0], [-1] | Een array-element (negatief telt vanaf het einde) |
[1:3], [::2] | Een slice: begin, einde (exclusief) en stap |
* | Alle leden of elementen |
..name | name op elke diepte |
[?@.price < 10] | Kinderen waarvoor het filter waar is; @ is het huidige item |
Filters kunnen voorwaarden combineren met &&, || en !, met $ vergelijken met andere delen van het document en functies aanroepen: length(@.tags) > 2, count(@.items[*]) == 0, match(@.code, '[A-Z]{3}') als de hele string aan de reguliere expressie moet voldoen, en search(@.title, 'Ring') voor een overeenkomst ergens in de string.
Voorbeeld
Met de voorbeeldboekwinkel selecteert deze query de titels van boeken onder de 10:
$.store.book[?@.price < 10].title
en geeft terug:
["Sayings of the Century", "Moby Dick"]
Verander hem in $..book[?@.isbn].author om de auteurs van boeken met een ISBN te tonen, of in $..price om alle prijzen in de winkel te verzamelen, inclusief die van de fiets.
Veelgestelde vragen
› Welke JSONPath-syntaxis wordt ondersteund?
De standaardsyntaxis van RFC 9535: lidnamen met punt en vierkante haken, wildcards, array-indexen (ook negatieve), slices, zoeken op elke diepte met .., filters met vergelijkingen en && || !, en de functies length(), count(), match(), search() en value(). De oudere vorm ?(@.price < 10) werkt ook, want de haakjes groeperen alleen.
› Waarom geeft mijn query een lege array terug?
Een lege array betekent dat de query geldig is maar niets heeft gevonden. Controleer de lidnamen (hoofdlettergevoelig) en of een waarde een array of een object is. Met een brede query zoals $..* en Tonen op Paden zie je wat het document bevat.
› Kan ik scriptexpressies zoals [(@.length-1)] gebruiken?
Nee. Scriptexpressies voeren willekeurige code uit en horen niet bij de standaard. Gebruik een negatieve index: [-1] is het laatste element en [-2:] de laatste twee.
› Wordt mijn JSON naar een server gestuurd?
Nee. De query wordt in je browser geparsed en uitgevoerd door de code van de pagina; er wordt niets geüpload.