JSON-query
Haal waarden uit JSON met JSONPath-expressies of RFC 6901 JSON Pointer
JSON
Query
JSON-query
Haal waarden uit JSON met JSONPath-expressies of RFC 6901 JSON Pointer
Functies
- Twee querymodi naast elkaar: JSONPath (aangedreven door de gedeelde QueryService met wildcards en bracket-toegang) en RFC 6901 JSON Pointer (slash-gescheiden, met ~0/~1 escape) — kies de syntax die past bij je bestaande tools
- Wildcard `*` op elk pad-segment breidt uit naar alle objectsleutels of array-elementen op dat niveau — `$.store.books[*].title` retourneert elke boektitel zonder lus
- Elk resultaat toont zowel het concrete pad ALS de waarde: resultaten zijn geen enkel antwoord maar een padlijst — een wildcard-uitbreiding produceert N rijen die je individueel of als groep kunt kopiëren
- JSON Pointer-modus valideert segment-syntax: begint met `/`, integer-segmenten indexeren arrays, benoemde segmenten indexeren objecten, `~1` decodeert naar `/` en `~0` naar `~` — zelfde semantiek als JSON Schema instancePath en JSON Patch
- Per-resultaat kopieerknop schrijft de waarde naar het klembord (strings ruw, structuren als pretty-print JSON), en Alles kopiëren dumpt de volledige `pad: waarde`-lijst als platte tekst
- Parsefouten en query-fouten worden apart aan het oppervlak gebracht met de volledige JS-engine-melding — je weet meteen of je JSON of je expressie schuldig is
- Voorbeeld laden vult een klein boekhandel-document met een werkende query voor de actieve modus — handige eerste referentie voor de syntax
- Puur client-side: JSON, expressies en resultaten verlaten de browser niet; werkt offline zodra de pagina is gecachet
Hoe te gebruiken
- Plak het JSON-document dat je wilt bevragen in het linker tekstvak.
- Kies een querymodus: JSONPath (goed voor selectors met wildcards) of JSON Pointer (goed om één knoop ondubbelzinnig te benoemen).
- Typ de expressie in het queryveld — voorbeelden staan in de placeholder voor elke modus.
- Druk op Query uitvoeren of druk Enter in het queryveld. Resultaten verschijnen met concrete paden en waarden; een teller toont hoeveel er gevonden zijn.
- Kopieer individuele waarden met het icoon naast elk resultaat, of gebruik Alles kopiëren voor de volledige `pad: waarde`-lijst.
- Gebruik Voorbeeld laden om beide invoeren te vullen met een werkend voorbeeld als je nieuw bent met de syntax.
Tips en best practices
- Wanneer je niet zeker weet of je JSON een sleutel heeft, gebruik dan eerst een wildcard om op te sommen wat er werkelijk is, en verfijn dan.
- JSON Pointer-paden zijn als strings sorteerbaar — handig wanneer je pad-sets tussen twee structuren wilt vergelijken.
- Als een query één resultaat retourneert maar je er meer verwachtte, controleer typefouten (`book` vs `books`) — JSONPath hier retourneert exacte sleutelmatch, geen fuzzy match.
- Voor diep geneste data is JSON Pointer korter dan JSONPath omdat het geen `$` en `.` separators draagt — handig in chat of commit-berichten.
- Combineer met JSON Tree: navigeer eerst visueel, kopieer dan een bekend-goede pointer naar deze tool voor hergebruik.
Veelgestelde vragen
Welke JSONPath-syntax wordt ondersteund?
De minimale-maar-nuttige subset: `$` root, `.key` member-toegang, `['key']` quoted toegang (voor sleutels met punten of speciale tekens), `[N]` array-index, en `*` wildcard op elk segment. Filterexpressies (`[?(@.price < 30)]`), descendant-operator (`..`) en slicing (`[1:3]`) worden hier niet ondersteund — daarvoor gebruik je het JSONPath-tabblad van JSON Formatter dat een rijkere engine heeft.
Wat is het verschil tussen JSONPath en JSON Pointer?
JSONPath is een querytaal (XPath-voor-JSON) — kan meerdere knopen selecteren via wildcards, descendants en predicaten. JSON Pointer (RFC 6901) is een padnotatie — benoemt PRECIES ÉÉN knoop en die bestaat of niet. Gebruik JSONPath wanneer je een RESULTAAT-SET wilt; JSON Pointer wanneer je één deterministische locatie wilt (bv. voor JSON Patch of om een gefaalde instancePath uit een schema-validator te kopiëren).
Waarom heb ik beide modi nodig?
Verschillende tools en standaarden gebruiken verschillende notaties. JSON Schema instancePath-fouten zijn JSON Pointer. fast-json-patch gebruikt JSON Pointer. JSONPath is wat de meeste JSON-query-CLI-tools en veel libraries verwachten. Beide modi hier betekenen dat je een pad tussen tools kunt kopiëren zonder te herschrijven.
Hoe worden sleutels met speciale tekens afgehandeld?
JSONPath: quote ze in vierkante haakjes — `$['weird.key']` benadert de sleutel letterlijk genaamd `weird.key`. JSON Pointer: escape volgens RFC 6901 — `/` in een sleutel wordt `~1`, `~` wordt `~0`. De placeholder toont de standaardvorm voor elke modus.
Wat gebeurt er als het pad niets matcht?
Je krijgt een 0-resultaten-uitkomst en een 'Query gaf geen resultaten'-notitie in plaats van een fout. Dat is de normale JSONPath / JSON Pointer-conventie: ontbrekende paden zijn afwezigheid, niet falen. Onderscheid afwezigheid van malformde invoer door te kijken of de foutregel verscheen.
Kunnen wildcards in geneste arrays afdalen?
Ja, op elk niveau. `$.users[*].roles[*]` wildcards eerst over alle gebruikers, dan over de rollen van elke gebruiker, producerend elke rol-string. De uitvoertabel toont het opgeloste concrete pad van elk resultaat (bv. `$.users[0].roles[2]`), handig wanneer je precies wilt weten waar een hit vandaan kwam.
Wordt er iets naar een server gestuurd?
Nee. JSON.parse draait in je browser, JSONPath / JSON Pointer-evaluatie draait in je browser, en resultaten worden gerenderd in de pagina zonder netwerkaanroep. Het Netwerk-tabblad in DevTools toont niets bij klik op Query uitvoeren.
Wat is het verschil met het query-tabblad van JSON Formatter?
JSON Formatter is een multi-tool: format, validatie, schema-check, JSONPath, diff. Deze losse JSON Query is de minimale interface: één URL, twee modi, resultaten-als-lijst met per-resultaat kopie, geen extra oppervlakte. Gebruik de Formatter wanneer je één weergave wilt die meerdere JSON-workflows combineert; deze wanneer je alleen waarden wilt extraheren.