Query String

JSON

Vad gör Query String till JSON?

Du klistrar in en query string till vänster — med eller utan inledande ? — och högersidan fylls med ett JSON-objekt. Värden URL-avkodas på vägen (så customer=Ava%20Chen blir "customer": "Ava Chen"), och om samma nyckel förekommer mer än en gång samlas den ihop till en JSON-array. Det sista är just det de flesta hemsnickrade string-splittrar gör fel — och därför finns den här sidan.

Parsningen använder den i webbläsaren inbyggda URLSearchParams — samma sak som driver request.query i alla moderna webbramverk. URLSearchParams följer reglerna i application/x-www-form-urlencoded från WHATWG URL Standard, vilket är vad webbläsare skickar när ett formulär gör POST. Utdata serialiseras sedan via JSON.stringify enligt RFC 8259.

Allt körs i din webbläsare. Om dina indata är en hel URL är sidan tolerant — den plockar ut query-delen åt dig. Vill du bara ha själva URL-komponenterna (host, path osv.) använder du istället URL till JSON. Vill du bara titta på parametrarna utan att behålla JSON, passar sidan URL Parser bättre. Procentkodningsreglerna i spel här definieras av RFC 3986 §2.1.

Så konverterar du en Query String till JSON

Tre steg. Vart och ett motsvarar en knapp på den här sidan.

1

Klistra in Query String

Släpp query stringen i den vänstra panelen. Att ha med den inledande ? går bra — parsern tar bort den. Klicka på Exempel för att ladda en realistisk e-handels-filter-URL med procentkodade värden, hakparentesnotation och en upprepad tag-nyckel. Exempel:

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

Du kan också klistra in en hel URL som <code>https://shop.example.com/orders?...</code> — sidan plockar ut query-delen åt dig.

2

Läs JSON-objektet

Den högra panelen uppdateras medan du skriver. Varje parameter är en nyckel, varje värde avkodas och upprepade nycklar blir arrayer. Så exemplet ovan ger "customer": "Ava Chen", "total[gte]": "49.99" och "tag": ["premium", "verified"]. Tal förblir strängar — query strings bär ingen typinformation, så att låtsas annat skulle bara dölja buggar.

3

Kopiera, ladda ner eller minifiera

Klicka på Kopiera för att skicka JSON till urklipp, Ladda ner för att spara som querystring.json, eller Minifiera för att klämma ihop på en rad. Rensa återställer indatapanelen.

När du verkligen skulle använda det här

Debugga request-loggar

Serverloggar dumpar hela request-raden, query string och allt. När du jagar varför en kunds sökning inte gav något, är det snabbare att kopiera ?customer=Marco%20Rivera&status=cancelled&date_from=2026-04-01&date_to=2026-04-30 från loggen till den här sidan än att URL-avkoda varje värde i huvudet. JSON gör de faktiska filtervärdena uppenbara.

Generera test-fixtures från riktig trafik

Du skriver tester mot en endpoint som tar 12 query-parametrar. Ta en riktig URL från produktion, klistra in query stringen här och använd JSON som parameterobjekt i ditt test. Riktiga namn, riktiga former, riktiga buggar fångade — bättre än att hitta på customer: "ORD-1001" ur huvudet.

Migrera mellan query string-konventioner

Olika stackar kodar arrayer olika — ?tag=red&tag=blue, ?tag[]=red&tag[]=blue, ?tag=red,blue. Att först konvertera till JSON ger dig en neutral mellanform. Därifrån är transformeringen till målkonventionen ett 5-radigt skript istället för regex-arkeologi.

OAuth, webhooks och analytics-callbacks

OAuth-callbacks kommer tillbaka som ?code=abc&state=xyz. Webhook-URL:er från tjänster som Stripe eller GitHub stoppar in metadata i query stringen. Analytics-redirects staplar på ett dussin UTM- och tracking-parametrar ovanpå. Att klistra in bara query-delen här tar dig direkt till parameterobjektet utan att först behöva skala bort hosten.

Vanliga frågor

Måste jag ha med det inledande frågetecknet?

Nej — klistra in med eller utan. Parsern tar bort det inledande ? om den ser ett. Du kan till och med klistra in en hel URL (https://api.shop.example.com/orders?customer=Ava%20Chen) så plockar sidan ut query-delen åt dig.

Hur hanteras upprepade nycklar?

De samlas ihop i en JSON-array. Så ?tag=premium&tag=verified blir "tag": ["premium", "verified"]. Det matchar beteendet hos URLSearchParams.getAll() och hur Express, FastAPI, ASP.NET och Spring parsar query strings.

Hur är det med värdelösa nycklar som ?debug eller ?dry-run?

De blir tomma strängar — "debug": "". URLSearchParams behandlar en nyckel utan = som key= enligt WHATWG URL Standard. Behöver du en riktig boolean efterbehandlar du JSON med något som obj.debug = "debug" in obj.

Hur är det med hakparentesnotation som ?items[]=1&items[]=2?

Hakparenteserna behålls som en del av nyckeln — du ser "items[]": ["1", "2"] i utdata. Det är ärligt mot byten på tråden. Behöver ditt ramverk (PHP, Rails, qs.js) att hakparenteserna tas bort eller veckas ut till nästade objekt, gör det som ett efterbehandlingssteg.

Varför är alla värden strängar, även om de ser ut som tal eller boolean-värden?

För att query strings inte bär någon typinformation. ?count=5 och ?count=true är båda bara text. Att autokonvertera till tal eller boolean får ett happy-path-exempel att se prydligt ut men orsakar tysta buggar i samma stund som en kunds namn råkar vara "1" eller någon skriver ?id=007. Utdata förblir sträng; konvertera i din egen kod där du känner schemat.

Hur hanterar den Unicode och emoji?

Snyggt. URLSearchParams procentavkodar byten och tolkar dem sedan som UTF-8 — så ?name=%E4%B8%AD%E6%96%87 blir "name": "中文" och emoji som ?reaction=%F0%9F%94%A5 blir "reaction": "🔥". JSON.stringify skapar sedan escape för det som behöver det enligt RFC 8259 §7.

Andra URL- och JSON-verktyg

Att avkoda en query string är en operation. Här är vad som passar bra ihop med det: