Gratis JSONPath-tester — evalueer queries online
Test JSONPath-expressies direct tegen elke JSON. RFC 9535-standaardengine plus klassieke Goessner-modus, weergaven Waarden / Paden / Beide, genormaliseerde paden, geen eval. 100% privé, draait in je browser, geen upload.
Wat is een JSONPath-tester?
Een JSONPath-tester is een tool waarmee je een JSONPath-expressie schrijft, een JSON-document plakt en precies ziet welke knooppunten de expressie selecteert — zowel de getroffen waarden als hun precieze locaties — zonder code te schrijven of een script uit te voeren. Voor ontwikkelaars verkort het de cyclus van minuten naar milliseconden: pas het pad aan, zie het resultaat veranderen en lever de query met vertrouwen op.
JSONPath is een querytaal voor JSON, het JSON-equivalent van XPath voor XML. Een expressie is opgebouwd uit een klein alfabet van selectors. $ is de root van het document. Een punt of een paar haken stapt in een kind: $.store of $['store']. De dubbele punt .. is recursieve afdaling — het doorzoekt elk niveau van de boom. De wildcard * selecteert alle elementen of leden. Haken dragen array-indexen ([0]), slices ([start:end:step]), unies ([a,b]) en filterexpressies ([?(@.price < 10)], waarbij @ het geteste element is). Met die onderdelen kun je één veld uit een diep geneste API-antwoord halen, waarden in tests asserteren, datatransformaties aansturen in systemen zoals Kubernetes, AWS Step Functions en Azure Logic Apps, of gestructureerde data extraheren uit onregelmatige JSON — allemaal zonder imperatieve doorloopcode. JSONPath is ook berucht inconsistent tussen implementaties, wat precies het probleem is dat een goede tester blootlegt voordat het de productie bereikt.
Deze tester levert twee engines. De standaard is een RFC 9535-engine: RFC 9535 is de formele JSONPath-specificatie van de IETF uit februari 2024, de eerste keer dat de taal precies werd gestandaardiseerd na vijftien jaar van uiteenlopende implementaties. Het definieert een exacte grammatica, het concept van genormaliseerde paden voor resultaten en vijf standaardfuncties — length(), count(), match(), search(), value(). Onze RFC 9535-engine is een implementatie zonder afhankelijkheden die geen eval gebruikt, dus hij parseert en interpreteert expressies met zijn eigen grammatica in plaats van ze naar JavaScript te compileren. De tweede engine is Klassiek (Goessner), het feitelijke dialect uit 2007 dat de meeste oudere online tools en bibliotheken implementeren; schakel ernaartoe om resultaten van een tool zoals jsonpath.com te reproduceren of om een expressie uit verouderde code uit te voeren. De twee dialecten zijn het eens over veelvoorkomende paden maar lopen uiteen in de randgevallen — witruimte en aanhalingstekens in filters, de volgorde van unies, hoe ontbrekende leden vergeleken worden en welke functies bestaan — dus tussen beide kunnen wisselen op één plek is de snelste manier om te diagnosticeren waarom een expressie zich anders gedraagt dan je verwachtte.
Wat de tester naast ruwe waarden blootlegt: het resultaat van een JSONPath-query is een knooppuntenlijst, en dit tool kan die op drie manieren tonen. De weergave Waarden rendert de getroffen knooppunten als een JSON-array, precies wat je in code zou gebruiken. De weergave Paden rendert het genormaliseerde pad van elke treffer — een canonieke, met haken en aanhalingstekens genoteerde locatie zoals $['store']['book'][0]['title'] die uniek identificeert waar in het document de waarde zich bevindt, ongeacht hoe de expressie was geschreven. Twee expressies die hetzelfde knooppunt selecteren, leveren hetzelfde genormaliseerde pad op, wat de weergave Paden van onschatbare waarde maakt voor debuggen. De weergave Beide toont waarden en paden naast elkaar. Een statistiekregel rapporteert hoeveel knooppunten overeenkwamen.
Beveiliging is hier een eersteklas zorg. Veel online JSONPath-evaluatoren draaien op een server, of bevatten een bibliotheek die filterpredicaten evalueert met JavaScript eval — het ontwerp dat de kwetsbaarheden voor externe code-uitvoering produceerde die worden bijgehouden als CVE-2024-21534 en CVE-2025-1302 in veelgebruikte JSONPath-pakketten. Dit tool gebruikt helemaal geen eval. De RFC 9535-engine heeft geen eval-pad, en de Klassieke engine is gebouwd op een gepatchte, vastgezette release van jsonpath-plus met eval expliciet uitgeschakeld. Dat sluit de RCE-klasse van bugs af en laat het tool draaien onder een strikt Content-Security-Policy dat unsafe-eval verbiedt. Elke evaluatie is lokaal: je JSON en je expressie verlaten nooit de pagina, worden nooit gelogd en worden nooit op schijf opgeslagen — alleen je engine- en weergavevoorkeuren blijven behouden in localStorage. Dat maakt het tool veilig voor bedrijfseigen API-payloads, geredigeerde logs, interne configuratie en alle data met een schema dat je niet in een serverafhankelijke dienst zou plakken.
Als JSON-bewerking je taak is, combineer dit dan met de andere JSON-tools op de site: formatteer en print je invoer netjes met de JSON Formatter, vergelijk twee documenten met de JSON Diff, controleer een payload tegen een schema met de JSON Schema Validator, of zet een voorbeeldantwoord om in getypeerde interfaces met JSON to TypeScript.
// The expression you build in this tester maps straight onto the
// RFC 9535 reference library used under the hood.
import { query, paths } from 'jsonpath-rfc9535';
const document = {
store: {
book: [
{ title: 'Sayings of the Century', author: 'Nigel Rees', price: 8.95 },
{ title: 'Sword of Honour', author: 'Evelyn Waugh', price: 12.99 },
{ title: 'Moby Dick', author: 'Herman Melville', price: 8.99 },
{ title: 'The Lord of the Rings', author: 'J. R. R. Tolkien', price: 22.99 }
]
}
};
// Values: query(document, path) returns the matched values directly.
const titles = query(document, '$.store.book[*].title');
// → ['Sayings of the Century', 'Sword of Honour', 'Moby Dick', 'The Lord of the Rings']
// Filter: books cheaper than 10.
const cheap = query(document, '$.store.book[?(@.price < 10)].title');
// → ['Sayings of the Century', 'Moby Dick']
// Normalized paths: paths(document, path) returns where each match lives.
const authorPaths = paths(document, '$..author');
// → ["$['store']['book'][0]['author']", "$['store']['book'][1]['author']", ...]
// RFC 9535 functions like length() are used INSIDE filters, not as a segment.
const longTitles = query(document, '$.store.book[?length(@.title) > 15]');
// → the two books whose title is longer than 15 characters Belangrijkste functies
RFC 9535-standaardengine (geen eval)
De standaardengine implementeert RFC 9535, de formele JSONPath-specificatie van de IETF uit 2024 — exacte grammatica, genormaliseerde paden en de vijf standaardfuncties. Hij is zonder afhankelijkheden en gebruikt geen eval, dus hij parseert en interpreteert expressies met zijn eigen grammatica in plaats van ze naar JavaScript te compileren. Hij draait onder een strikt Content-Security-Policy.
Compatibiliteitsmodus Klassiek (Goessner)
Eén knop schakelt naar een Goessner-compatibele engine (gebouwd op jsonpath-plus, geconstrueerd met eval uitgeschakeld) zodat expressies uit oudere tools zoals jsonpath.com zich gedragen zoals je ze daar zag. Wissel tussen RFC 9535 en Klassiek om resultaten te vergelijken en te diagnosticeren waarom een pad anders matcht tussen dialecten.
Drie resultaatweergaven: Waarden, Paden, Beide
Waarden rendert getroffen knooppunten als een JSON-array, precies wat je in code gebruikt. Paden rendert het genormaliseerde pad van elke treffer zoals $['store']['book'][0]['title']. Beide toont ze naast elkaar zodat je elke waarde aan zijn precieze locatie kunt koppelen. De actieve weergave blijft tussen sessies behouden.
Genormaliseerde paden voor elke treffer
Elk resultaat draagt zijn canonieke, met haken en aanhalingstekens genoteerde genormaliseerde pad — de RFC 9535-manier om de locatie van een knooppunt uniek te identificeren, ongeacht hoe de expressie was geschreven. Twee expressies die hetzelfde knooppunt raken, leveren hetzelfde genormaliseerde pad op, wat het debuggen van dubbelzinnige queries eenvoudig maakt.
Volledige selectorondersteuning
Root $, huidig element @, kind .name, recursieve afdaling ..name, wildcard [*], array-index [0], slice [start:end:step], unie [a,b] en filterexpressies [?()] met vergelijkings- en logische operatoren. Een ingebouwd spiekblad documenteert elke selector zodat je nooit de pagina hoeft te verlaten om er een op te zoeken.
RFC 9535-functie-uitbreidingen
Roep length(), count(), match(), search() en value() aan binnen expressies — tel de elementen van een array, test een string tegen een I-Regexp-patroon, of filter op de grootte van een geneste lijst. Deze standaardfuncties zijn beschikbaar in de standaardengine; het tool zegt je van engine te wisselen als je ze in de Klassieke modus aanroept.
Formatteren, uploaden en voorbeelden
JSON formatteren print je invoer netjes zodat de structuur leesbaar is voordat je een query uitvoert. Uploaden leest een .json- of .txt-bestand volledig in de browser — het wordt nooit ergens heen gestuurd. De keuzelijst Voorbeelden laadt betrouwbare startexpressies tegen voorbeelddata zodat je de engine ziet werken voordat je een pad aanpast.
Permalinks delen (geen upload)
Link kopiëren codeert de JSON, expressie, engine en weergave in de URL-hash. Browsers verzenden URL-fragmenten nooit in verzoeken, dus een gedeelde link reproduceert je volledige status op de machine van de ontvanger zonder de servers van go-tools.org aan te raken. Zelfstandig en auditvriendelijk voor gezamenlijk debuggen.
100% privé, alleen in de browser
Je JSON en je expressie verlaten nooit je apparaat. Geen netwerkverzoeken, geen logging, geen analyse van wat je typt — verifieer in DevTools → Netwerk. Alleen de engine- en weergavevoorkeuren blijven behouden in localStorage. Veilig voor bedrijfseigen payloads, geredigeerde logs en alle data die je niet in jsonpath.com zou plakken.
Uitgewerkte voorbeelden
Selecteer elke boektitel uit een boekhandeldocument
$.store.book[*].title
["Sayings of the Century", "Sword of Honour", "Moby Dick", "The Lord of the Rings"]
Plak de klassieke Goessner-boekhandel-JSON, typ de expressie en de weergave Waarden geeft een JSON-array met alle vier de titels terug. Schakel naar Paden om elk resultaat te zien als een genormaliseerd pad zoals $['store']['book'][0]['title']. De wildcard [*] doorloopt elk element van de book-array; .title projecteert één lid uit elk element.
Filter boeken goedkoper dan 10 met een filterexpressie
$.store.book[?(@.price < 10)].title
["Sayings of the Century", "Moby Dick"]
De filterselector [?()] behoudt alleen array-elementen waarvoor het predicaat waar is; @ is het huidige element. Tegen de boekhandelgegevens (prijzen 8.95, 12.99, 8.99, 22.99) voldoen twee boeken. Beide engines accepteren deze vorm, maar let op: Klassiek (Goessner) schrijft hetzelfde filter als [?(@.price<10)] — schakel van engine als je een expressie uit een ouder tool hebt gekopieerd.
Doorloop de hele boom met recursieve afdaling
$..author
["Nigel Rees", "Evelyn Waugh", "Herman Melville", "J. R. R. Tolkien"]
De operator .. daalt af in elk niveau van het document en verzamelt elk author-lid waar het ook voorkomt, ongeacht de nestingdiepte. Recursieve afdaling is de snelste manier om één veld uit een diep geneste of onregelmatige structuur te halen zonder het volledige pad uit te schrijven.
Snijd een array met [start:end:step]
$.store.book[0:2].title
["Sayings of the Century", "Sword of Honour"]
Array-slices volgen dezelfde half-open conventie [start:end] als Python en JavaScript: index 0 tot maar niet inclusief index 2 geeft de eerste twee boeken terug. Voeg een derde veld toe voor een stap — $.store.book[::2] neemt elk tweede element. De eindgrens is exclusief, een veelvoorkomende off-by-one-valkuil die de weergave Paden duidelijk maakt.
Filter op titellengte met de RFC 9535-functie length()
$.store.book[?length(@.title) > 15]
[{"title": "Sayings of the Century", "author": "Nigel Rees", "price": 8.95}, {"title": "The Lord of the Rings", "author": "J. R. R. Tolkien", "price": 22.99}] length() is een van de vijf RFC 9535-standaardfuncties en is alleen geldig binnen een filterexpressie [?...] — nooit als losstaand padsegment zoals $.store.book.length(), wat de RFC 9535-grammatica afwijst (die segmentvorm is een jsonpath-plus-uitbreiding, geen standaard-JSONPath). Hier behoudt het filter elk boek waarvan de titel meer dan 15 tekens telt; tegen de boekhandelgegevens worden de titels langer dan 15 tekens geselecteerd (bijvoorbeeld "Sayings of the Century" en "The Lord of the Rings"), terwijl kortere zoals "Moby Dick" en "Sword of Honour" worden uitgesloten. count(), match(), search() en value() worden eveneens binnen filters gebruikt. Deze functies zijn een RFC 9535-kenmerk — schakel naar de standaardengine (de standaard) om ze te gebruiken; de modus Klassiek (Goessner) implementeert ze niet.
Selecteer een unie van twee benoemde leden
$.store.book[0]['title','author']
["Sayings of the Century", "Nigel Rees"]
Een unieselector [a,b] verzamelt meerdere kinderen in één expressie. Hier haalt hij zowel de title als de author van het eerste boek op. Unies werken ook met array-indexen — [0,2] pakt het eerste en derde element. De weergave Beide koppelt elke waarde aan zijn genormaliseerde pad, zodat je precies ziet welk lid welk resultaat opleverde.
Hoe gebruik je de JSONPath-tester
- 1
Plak of upload je JSON
Sleep JSON in het invoervak, plak het, of klik op Uploaden om een .json- / .txt-bestand van schijf te laden. JSON formatteren springt het document opnieuw in. Ongeldige JSON wordt inline gemarkeerd met een parserbericht voordat je een query uitvoert.
- 2
Kies een engine
RFC 9535 (de IETF-standaard uit 2024, geen eval) is de standaard. Schakel naar Klassiek (Goessner) wanneer je een expressie uitvoert die je uit een ouder tool zoals jsonpath.com hebt gekopieerd, zodat de resultaten overeenkomen met wat je daar zag.
- 3
Typ je JSONPath-expressie
De leidende $ wordt voor je getoond. Begin met een kindpad zoals .store.book[*].title, een index zoals [0], een recursieve afdaling zoals ..author, of een filter zoals [?(@.price < 10)]. Resultaten worden live bijgewerkt terwijl je typt.
- 4
Schakel de resultaatweergave
Waarden toont een JSON-array van getroffen waarden. Paden toont het genormaliseerde pad van elke treffer zoals $['store']['book'][0]['title']. Beide toont ze naast elkaar zodat je elke waarde aan zijn exacte locatie in het document kunt koppelen.
- 5
Kopieer het resultaat of deel een permalink
Resultaat kopiëren plaatst de uitvoer op je klembord. Link kopiëren codeert de JSON, expressie, engine en weergave in een URL-hash (geen upload) zodat een collega de exacte query lokaal op zijn eigen machine kan reproduceren.
Veelvoorkomende JSONPath-fouten
De leidende $ root vergeten
Elke JSONPath-expressie begint bij de root, geschreven als $. Die weglaten (of het pad schrijven alsof $ impliciet is) zorgt ervoor dat de meeste engines de expressie afwijzen. De tester toont de $ voor je, dus begin je invoer met de volgende selector — een punt, een paar haken of een recursieve afdaling.
store.book[*].title → invalid (no root)
$.store.book[*].title → selects every title
Off-by-one-slice — de eindindex inbegrepen verwacht
Slices zijn half-open: [start:end] loopt tot maar niet inclusief end. [0:2] geeft twee elementen terug (indexen 0 en 1), niet drie. Om het laatste element op index in te sluiten, gebruik [start:] of duw de eindgrens er één voorbij.
$.store.book[0:2] → first TWO books, not three
$.store.book[0:3] → first three books (indices 0,1,2)
Een Klassieke expressie gebruikt in de RFC 9535-engine (of andersom)
Een expressie gekopieerd van jsonpath.com of jsonpath-plus kan onder RFC 9535 anders parseren of matchen vanwege filter-, unie- en functieverschillen. Als de resultaten verkeerd lijken, schakel de engine-knop dan om naar het dialect waarvoor de expressie is geschreven.
Classic filter run under RFC 9535 → parse error or unexpected nodes
Switch engine to Classic (Goessner) → reproduces the original result
Een RFC 9535-functie aangeroepen als losstaand segment
length(), count(), match(), search() en value() zijn RFC 9535-functie-uitbreidingen die alleen geldig zijn binnen een filter [?...]. Een losstaande segmentaanroep zoals $.store.book.length() wordt afgewezen door de RFC 9535-grammatica (het is een jsonpath-plus-uitbreiding, geen standaard). Roep de functie binnen een filter aan en gebruik de standaard RFC 9535-engine — de engine Klassiek (Goessner) implementeert deze functies niet.
$.store.book.length() → parse error (not a valid RFC 9535 segment)
$.store.book[?length(@.title) > 15] → books with a title over 15 chars
De @ in een filterexpressie vergeten
Binnen een filter [?()] is het huidige element @, niet $. $.price schrijven verwijst terug naar de document-root in plaats van naar het geteste element, dus het filter selecteert niets of alles. Gebruik @ om leden van het gefilterde element te adresseren.
$.store.book[?($.price < 10)] → wrong scope
$.store.book[?(@.price < 10)] → books under 10
Een ledennaam met de verkeerde syntaxis geciteerd
Haaknotatie vereist aanhalingstekens rond stringsleutels: $['store'] of $.store werken beide, maar $[store] (ongeciteerd tussen haken) is een index-/identifierfout. Gebruik aanhalingstekens tussen haken voor elke sleutel met spaties, punten of speciale tekens: $['first name'].
$[store][book] → invalid bracket selectors
$['store']['book'] → same as $.store.book
Verwacht dat recursieve afdaling op het eerste niveau stopt
$..author stopt niet bovenaan — het verzamelt elk author-lid op elke diepte. Als je alleen directe kinderen wilt, schrijf het pad dan uit. Recursieve afdaling over een groot document kan veel meer knooppunten teruggeven dan bedoeld.
$..price → every price anywhere in the tree
$.store.book[*].price → only book prices
Wie gebruikt dit tool
- Extraheer velden uit een API-antwoord
- Haal request-ID's, geneste resource-attributen of een lijst met namen uit een JSON-payload zonder doorloopcode te schrijven. Bouw het pad hier tegen een voorbeeldantwoord, bevestig dat het precies de knooppunten teruggeeft die je wilt in de weergave Waarden, en plak vervolgens de gevalideerde expressie in je applicatie of test.
- Schrijf asserties voor integratietests
- Veel testframeworks en contracttesttools (REST Assured, Karate, Postman) gebruiken JSONPath om op responsbodies te asserteren. Stel het assertiepad hier op, verifieer dat het het juiste knooppunt selecteert tegen een echt antwoord, en kopieer het naar je test — zo vang je een verkeerd pad op voordat de suite rood wordt.
- Configureer datatransformaties in pijplijnen
- Kubernetes, AWS Step Functions, Azure Logic Apps en veel ETL-tools accepteren JSONPath om velden in event-payloads te adresseren. Prototypeer het exacte pad hier tegen een representatief event, bevestig dat het resolveert, en plaats het in je pijplijnconfiguratie met de zekerheid dat het wijst waar je bedoelt.
- Reproduceer een jsonpath.com-resultaat privé
- Heb je een expressie van een serverafhankelijke evaluator maar kun je je data niet in een externe site plakken? Schakel naar de modus Klassiek (Goessner), laad je JSON en reproduceer hetzelfde resultaat lokaal — geen payload verlaat ooit je browser, dus bedrijfseigen data blijft op je machine.
- Migreer verouderde expressies naar RFC 9535
- Overstappen naar een systeem dat RFC 9535-conformiteit adverteert? Voer een verouderde expressie uit in de Klassieke modus, schakel dan naar de RFC 9535-engine om te zien of die nog parseert en dezelfde knooppunten matcht. De vergelijking met dubbele engine wijst de filter-, unie- en functieverschillen aan die je anders in productie zou tegenkomen.
- Debug waarom een pad de verkeerde knooppunten teruggeeft
- Een pad dat te veel of te weinig selecteert, is moeilijk te beredeneren op basis van de waarden alleen. Schakel naar de weergave Paden om de genormaliseerde locatie van elke treffer te zien — de exacte array-index, de exacte ledenketen — en de off-by-one-slice of verdwaalde recursieve afdaling wordt onmiddellijk duidelijk.
- Onderwijs of beoordeel JSONPath
- Open een werkende expressie tegen voorbeelddata en loop er selector voor selector doorheen, terwijl je wisselt tussen Waarden en Paden zodat de lerende zowel ziet wat wordt geselecteerd als waar het zich bevindt. Het spiekblad en de uitgewerkte voorbeelden bieden een gestructureerde referentie voor codereview of onboarding.
Engine- en algoritmenotities
- RFC 9535-engine (jsonpath-rfc9535, zonder afhankelijkheden)
- De standaardengine implementeert de IETF RFC 9535-grammatica direct: hij tokeniseert en parseert de expressie tot een abstracte syntaxisboom en interpreteert die tegen het document. Er is nergens in het pad eval of de Function-constructor, dus hij is immuun voor de klasse van eval-injectiebugs en draait onder een strikt Content-Security-Policy.
- Klassieke engine (jsonpath-plus, eval uitgeschakeld)
- De engine Klassiek (Goessner) is jsonpath-plus, vastgezet op een gepatchte release (>= 10.4.0) en geconstrueerd met de eval-optie expliciet op false. Dat behoudt de compatibiliteit met het Goessner-dialect en sluit tegelijk de vectoren voor externe code-uitvoering af die worden bijgehouden als CVE-2024-21534 en CVE-2025-1302, die het standaard op eval gebaseerde filterpad van de bibliotheek troffen.
- Generatie van genormaliseerde paden
- Elke treffer wordt gerapporteerd met zijn genormaliseerde RFC 9535-pad — een canonieke vorm met enkele aanhalingstekens in haaknotatie ($['store']['book'][0]['title']) met array-indexen als kale gehele getallen. Genormaliseerde paden zijn stabiel en uniek per knooppunt, dus gelijkwaardige expressies leveren identieke paden op, waarop de weergaven Paden en Beide vertrouwen voor ondubbelzinnige resultaatidentificatie.
- Lui geladen engine-chunks
- Beide engines worden als afzonderlijke JavaScript-chunks geladen, alleen wanneer ze voor het eerst worden geselecteerd, zodat de initiële pagina licht blijft en de engine die je niet gebruikt nooit wordt gedownload. Van engine wisselen herevalueert de huidige expressie onmiddellijk tegen het huidige document, zonder pagina-herlaad.
- Lokaal bestanden lezen en JSON formatteren
- De knop Uploaden gebruikt de browser-FileReader-API om een .json- of .txt-bestand volledig aan de clientzijde in de invoer te lezen — het bestand wordt nooit verzonden. JSON formatteren parseert en serialiseert de invoer opnieuw met inspringing van twee spaties en brengt parsefouten inline naar voren zodat misvormde JSON wordt opgevangen vóór evaluatie.
- Permalinks via URL-hash (nooit verzonden)
- De deelstatus wordt gecodeerd in het location.hash-fragment, dat de JSON, de expressie, de actieve engine en de resultaatweergave draagt. Browsers nemen het fragment nooit op in HTTP-verzoeken, dus de servers van go-tools.org ontvangen nul data wanneer een permalink wordt geopend; hydratatie gebeurt volledig op het apparaat van de ontvanger.
JSONPath best practices
- Kies de engine die bij je doel past
- Als je downstream-systeem RFC 9535-conformiteit adverteert, schrijf en valideer dan tegen de RFC 9535-engine. Als je een expressie van een ouder tool of bibliotheek reproduceert of onderhoudt, gebruik dan Klassiek (Goessner). Valideren tegen het verkeerde dialect is de meest voorkomende reden dat een pad dat in de tester werkte, in productie faalt.
- Verifieer met de weergave Paden, niet alleen Waarden
- De weergave Waarden vertelt je wat overeenkwam; de weergave Paden vertelt je waar. Wanneer een query de juist ogende waarden teruggeeft, kan hij ze toch uit de verkeerde locatie selecteren — een verdwaalde recursieve afdaling of een te brede wildcard. Controleer de genormaliseerde paden om te bevestigen dat de expressie precies de knooppunten raakt die je bedoelt.
- Let op het exclusieve einde van een slice
- [0:2] selecteert indexen 0 en 1, niet 0 tot en met 2 — de eindgrens is exclusief, net als in Python en JavaScript. Off-by-one-slicefouten zijn de meest voorkomende JSONPath-bug. Gebruik de weergave Paden om de exacte index van elk geselecteerd element te lezen en de grens te bevestigen voordat je oplevert.
- Verkies een expliciet pad boven recursieve afdaling waar mogelijk
- $..price is handig maar matcht elke prijs overal in het document, inclusief die je niet bedoelde. Wanneer je de structuur kent, schrijf het pad dan uit ($.store.book[*].price) zodat de query precies en voorspelbaar blijft naarmate de data groeit. Reserveer .. voor werkelijk onregelmatige of onbekende vormen.
- Houd witruimte en aanhalingstekens consistent in filters
- RFC 9535 volgt zijn grammatica exact voor filterexpressies, terwijl het klassieke dialect losser is. Schrijf filters netjes — citeer stringliterals met enkele aanhalingstekens ('fiction'), houd operatoren gespatieerd en vermijd te leunen op soepel parsen — zodat dezelfde expressie op dezelfde manier evalueert ongeacht welke engine of bibliotheek uiteindelijk draait.
Veelgestelde vragen
Worden mijn JSON of JSONPath-expressie naar jullie server verstuurd?
Wat is JSONPath en waarvoor wordt het gebruikt?
Wat is het verschil tussen RFC 9535 en de klassieke Goessner-syntaxis?
Waarom geeft dezelfde expressie verschillende resultaten in de twee engines, en hoe gebruik ik een expressie die ik van jsonpath.com heb gekopieerd?
Hoe werken filterexpressies [?()]?
Wat doet recursieve afdaling (..)?
Wat zijn de RFC 9535-functies length(), count(), match(), search() en value()?
Hoe werken array-slices [start:end:step]?
Wat is een unieselector en hoe selecteer ik meerdere sleutels tegelijk?
Kan ik een JSONPath-query en de bijbehorende JSON via een link delen?
Is er een maximale JSON-grootte?
Hoe verschilt dit van jsonpath.com en is het veilig — geen eval?
Wat tonen de weergaven Waarden, Paden en Beide?
Werkt dit offline, en hoe zit het met een Content-Security-Policy?
Gerelateerde tools
Alle tools bekijken →Base64 decoderen en encoderen online
Encodering en formattering
Base64 decoderen en encoderen direct in je browser. Realtime conversie met volledige UTF-8- en emoji-ondersteuning. 100% privé — geen account nodig.
Base64 naar afbeelding converter
Encodering en formattering
Decodeer een Base64-string of data-URI terug naar een afbeelding in je browser. Bekijk voorbeeld, lees afmetingen & MIME, download als PNG, JPG, GIF, SVG. Geen upload.
CSV naar JSON omzetter
Encodering en formattering
Zet CSV om naar JSON in uw browser. RFC 4180, type-afleiding, headerregel, big-int veilig. 100% privé, geen upload.
.env naar JSON Converter
Encodering en formattering
Plak een .env-bestand, krijg direct JSON. Je wachtwoorden, API-sleutels en tokens verlaten nooit je browser — 100% privé, gratis dotenv-parser.
HTML naar Markdown omzetter
Encodering en formattering
Zet HTML om naar schone Markdown in je browser — GFM-tabellen, takenlijsten en links. Kies ATX/Setext-koppen en inline- of referentielinks. Ideaal om webinhoud te migreren of LLM's te voeden. 100% privé, geen upload.
Afbeelding naar Base64 converter
Encodering en formattering
Zet afbeeldingen om naar Base64 data-URI's in je browser — PNG, JPG, GIF, WebP, SVG, ICO. Kopieer HTML-, CSS-, Markdown- en JSON-uitvoer. 100% privé, zonder uploaden.