Query String

JSON

Wat doet Query String naar JSON?

Je plakt links een query string — met of zonder de voorafgaande ? — en rechts vult zich een JSON-object. Waarden worden onderweg URL-gedecodeerd (dus customer=Ava%20Chen wordt "customer": "Ava Chen"), en als dezelfde sleutel meer dan één keer voorkomt klapt hij samen tot een JSON-array. Dat laatste is wat de meeste ad-hoc string-splits fout doen, en daarom bestaat deze pagina.

Het parsen gebruikt de in de browser ingebouwde URLSearchParams — hetzelfde wat request.query aandrijft in elk modern web framework. URLSearchParams volgt de regels van application/x-www-form-urlencoded uit de WHATWG URL Standard, wat browsers sturen wanneer een formulier POSTt. De uitvoer wordt vervolgens geserialiseerd via JSON.stringify volgens RFC 8259.

Alles draait in je browser. Als je invoer een complete URL is, is de pagina vergevingsgezind — hij haalt het query-deel er voor je uit. Als je alleen de URL-componenten zelf wilt (host, pad, etc.), gebruik dan URL naar JSON. Als je alleen even naar de parameters wilt kijken zonder de JSON te bewaren, past de pagina URL Parser beter. De percent-encoding-regels die hier spelen zijn gedefinieerd in RFC 3986 §2.1.

Hoe je een Query String omzet naar JSON

Drie stappen. Elke stap hoort bij een knop op deze pagina.

1

Plak de Query String

Gooi de query string in het linkerpaneel. Inclusief de voorafgaande ? is prima — de parser haalt hem weg. Klik op Voorbeeld om een realistische e-commerce-filter-URL te laden, met percent-encoded waarden, bracket-notatie en een herhaalde tag-sleutel. Voorbeeld:

?customer=Ava%20Chen&status=active&total%5Bgte%5D=49.99&page=2&tag=premium&tag=verified

Je kunt ook een complete URL plakken zoals <code>https://shop.example.com/orders?...</code> en de pagina haalt het query-deel er voor je uit.

2

Lees het JSON-object

Het rechterpaneel werkt bij terwijl je typt. Elke parameter is een sleutel, elke waarde is gedecodeerd en herhaalde sleutels worden arrays. Het voorbeeld hierboven levert dus "customer": "Ava Chen", "total[gte]": "49.99" en "tag": ["premium", "verified"]. Getallen blijven strings — query strings dragen geen type-informatie, dus die nadoen zou alleen bugs verbergen.

3

Kopiëren, downloaden of minimaliseren

Klik op Kopiëren om de JSON naar je klembord te sturen, Downloaden om hem op te slaan als querystring.json, of Minimaliseren om hem op één regel te krijgen. Wissen reset het invoerpaneel.

Wanneer je dit echt zou gebruiken

Request-logs debuggen

Server-logs dumpen de hele request-regel, query string en al. Als je jaagt op de reden waarom de zoekopdracht van een klant niets opleverde, is ?customer=Marco%20Rivera&status=cancelled&date_from=2026-04-01&date_to=2026-04-30 uit het log naar deze pagina kopiëren sneller dan elke waarde mentaal URL-decoderen. De JSON maakt de echte filterwaarden meteen duidelijk.

Test-fixtures genereren uit echt verkeer

Je schrijft tests tegen een endpoint dat 12 query-parameters aanneemt. Pak een echte URL uit productie, plak de query string hier en gebruik de JSON als parameter-object in je test. Echte namen, echte vormen, echte bugs gevangen — beter dan customer: "ORD-1001" uit je hoofd verzinnen.

Migreren tussen query-string-conventies

Verschillende stacks coderen arrays anders — ?tag=red&tag=blue, ?tag[]=red&tag[]=blue, ?tag=red,blue. Eerst converteren naar JSON geeft je een neutrale tussenvorm. Vandaaruit is transformeren naar de doelconventie een script van 5 regels in plaats van regex-archeologie.

OAuth, webhooks en analytics-callbacks

OAuth-callbacks komen terug als ?code=abc&state=xyz. Webhook-URLs van diensten als Stripe of GitHub proppen metadata in de query string. Analytics-redirects stapelen er een dozijn UTM- en tracking-params bovenop. Door alleen het query-deel hier te plakken kom je direct bij het parameter-object zonder de host eerst weg te hoeven knippen.

Veelgestelde vragen

Moet ik het voorafgaande vraagteken meenemen?

Nee — plak met of zonder. De parser haalt de voorafgaande ? weg als hij er een ziet. Je kunt zelfs een complete URL plakken (https://api.shop.example.com/orders?customer=Ava%20Chen) en de pagina haalt het query-deel eruit.

Hoe worden herhaalde sleutels behandeld?

Ze worden samengevoegd tot een JSON-array. Dus ?tag=premium&tag=verified wordt "tag": ["premium", "verified"]. Dit komt overeen met het gedrag van URLSearchParams.getAll() en met hoe Express, FastAPI, ASP.NET en Spring query strings parsen.

En sleutels zonder waarde zoals ?debug of ?dry-run?

Die worden lege strings — "debug": "". URLSearchParams behandelt een sleutel zonder = hetzelfde als key= volgens de WHATWG URL Standard. Als je een echte boolean nodig hebt, verwerk de JSON na met iets als obj.debug = "debug" in obj.

En bracket-notatie zoals ?items[]=1&items[]=2?

De brackets blijven onderdeel van de sleutel — je ziet "items[]": ["1", "2"] in de uitvoer. Dat is eerlijk ten opzichte van de bytes op de leiding. Als je framework (PHP, Rails, qs.js) wil dat de brackets weggehaald worden of geëxpandeerd naar geneste objecten, doe dat als nabewerking.

Waarom zijn alle waarden strings, ook als ze op getallen of booleans lijken?

Omdat query strings geen type-informatie meedragen. ?count=5 en ?count=true zijn allebei gewoon tekst. Automatisch casten naar getallen of booleans laat een happy-path-voorbeeld er netjes uitzien maar veroorzaakt stille bugs op het moment dat de naam van een klant "1" is of iemand ?id=007 schrijft. De uitvoer blijft string; converteer in je code waar je het schema kent.

Hoe gaat het om met Unicode en emoji?

Netjes. URLSearchParams percent-decodeert de bytes en interpreteert ze daarna als UTF-8 — dus ?name=%E4%B8%AD%E6%96%87 wordt "name": "中文" en emoji als ?reaction=%F0%9F%94%A5 worden "reaction": "🔥". JSON.stringify escapet vervolgens wat geëscaped moet worden volgens RFC 8259 §7.

Andere URL- & JSON-tools

Een query string decoderen is één bewerking. Wat verder goed combineert: