Query-String

JSON

Was macht Query-String zu JSON?

Du fügst links einen Query-String ein — mit oder ohne führendes ? — und rechts wird ein JSON-Objekt aufgebaut. Werte werden unterwegs URL-dekodiert (also wird aus customer=Ava%20Chen ein "customer": "Ava Chen"), und wenn derselbe Schlüssel mehrfach auftaucht, fasst er sich zu einem JSON-Array zusammen. Genau dieser letzte Punkt ist es, den die meisten improvisierten String-Splits falsch machen — deshalb gibt es diese Seite.

Das Parsing nutzt das im Browser eingebaute URLSearchParams — dasselbe, was in jedem modernen Web-Framework hinter request.query steht. URLSearchParams folgt den Regeln von application/x-www-form-urlencoded aus dem WHATWG URL Standard, also genau dem Format, das Browser beim Form-POST schicken. Die Ausgabe wird anschließend per JSON.stringify nach RFC 8259 serialisiert.

Alles läuft in deinem Browser. Wenn deine Eingabe eine komplette URL ist, ist die Seite kulant — sie zieht den Query-Teil für dich heraus. Wenn du nur die URL-Bestandteile selbst willst (Host, Pfad usw.), nimm stattdessen URL zu JSON. Wenn du dir die Parameter nur ansehen und das JSON nicht behalten willst, passt die Seite URL Parser besser. Die hier wirksamen Prozent-Encoding-Regeln sind in RFC 3986 §2.1 definiert.

So wandelst du einen Query-String in JSON um

Drei Schritte. Jeder entspricht einem Button auf dieser Seite.

1

Query-String einfügen

Wirf den Query-String ins linke Panel. Das führende ? ist OK — der Parser entfernt es. Klick auf Beispiel, um eine realistische E-Commerce-Filter-URL zu laden, mit prozentkodierten Werten, Klammer-Notation und einem wiederholten tag-Schlüssel. Beispiel:

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

Du kannst auch eine komplette URL wie <code>https://shop.example.com/orders?...</code> einfügen, die Seite zieht den Query-Teil für dich heraus.

2

Lies das JSON-Objekt

Das rechte Panel aktualisiert sich, während du tippst. Jeder Parameter ist ein Schlüssel, jeder Wert ist dekodiert, und wiederholte Schlüssel werden zu Arrays. Das Beispiel oben erzeugt also "customer": "Ava Chen", "total[gte]": "49.99" und "tag": ["premium", "verified"]. Zahlen bleiben Strings — Query-Strings tragen keine Typinformationen, sie zu erfinden würde nur Bugs verstecken.

3

Kopieren, herunterladen oder minifizieren

Klick auf Kopieren, um das JSON in die Zwischenablage zu schicken, Herunterladen, um es als querystring.json zu speichern, oder Minifizieren, um es auf eine Zeile zu schrumpfen. Leeren setzt das Eingabe-Panel zurück.

Wann du das wirklich brauchst

Request-Logs debuggen

Server-Logs pumpen die komplette Request-Zeile raus, Query-String inklusive. Wenn du jagst, warum die Suche eines Kunden nichts geliefert hat, ist es schneller, ?customer=Marco%20Rivera&status=cancelled&date_from=2026-04-01&date_to=2026-04-30 aus dem Log auf diese Seite zu kopieren, als jeden Wert im Kopf URL-zu-dekodieren. Das JSON macht die echten Filterwerte offensichtlich.

Test-Fixtures aus echtem Traffic generieren

Du schreibst Tests gegen einen Endpoint mit 12 Query-Parametern. Schnapp dir eine echte URL aus der Produktion, füg den Query-String hier ein und nimm das JSON als Parameter-Objekt für den Test. Echte Namen, echte Formen, echte Bugs — besser als sich customer: "ORD-1001" aus dem Kopf auszudenken.

Zwischen Query-String-Konventionen migrieren

Verschiedene Stacks kodieren Arrays unterschiedlich — ?tag=red&tag=blue, ?tag[]=red&tag[]=blue, ?tag=red,blue. Erst nach JSON umzuwandeln, gibt dir eine neutrale Zwischenform. Von dort aus ist die Transformation in die Zielkonvention ein 5-Zeilen-Skript statt Regex-Archäologie.

OAuth, Webhooks und Analytics-Callbacks

OAuth-Callbacks kommen als ?code=abc&state=xyz zurück. Webhook-URLs von Diensten wie Stripe oder GitHub stopfen Metadaten in den Query-String. Analytics-Redirects packen ein Dutzend UTM- und Tracking-Params obendrauf. Wenn du nur den Query-Teil hier einfügst, kommst du direkt zum Parameter-Objekt, ohne den Host vorher abziehen zu müssen.

Häufige Fragen

Muss ich das führende Fragezeichen mitkopieren?

Nein — füg ein, wie du willst. Der Parser entfernt das führende ?, falls vorhanden. Du kannst sogar eine komplette URL einfügen (https://api.shop.example.com/orders?customer=Ava%20Chen), die Seite zieht den Query-Teil heraus.

Wie werden wiederholte Schlüssel behandelt?

Sie werden zu einem JSON-Array zusammengefasst. ?tag=premium&tag=verified wird also zu "tag": ["premium", "verified"]. Das passt zum Verhalten von URLSearchParams.getAll() und dazu, wie Express, FastAPI, ASP.NET und Spring Query-Strings parsen.

Was ist mit wertlosen Schlüsseln wie ?debug oder ?dry-run?

Sie werden zu leeren Strings — "debug": "". URLSearchParams behandelt einen Schlüssel ohne = wie key= gemäß dem WHATWG URL Standard. Wenn du einen echten Boolean brauchst, verarbeite das JSON nach mit etwas wie obj.debug = "debug" in obj.

Was ist mit Klammer-Notation wie ?items[]=1&items[]=2?

Die Klammern bleiben Teil des Schlüssels — du siehst in der Ausgabe "items[]": ["1", "2"]. Das ist ehrlich gegenüber den Bytes auf der Leitung. Wenn dein Framework (PHP, Rails, qs.js) die Klammern entfernen oder zu verschachtelten Objekten expandieren muss, mach das als Nachverarbeitung.

Warum sind alle Werte Strings, auch wenn sie wie Zahlen oder Booleans aussehen?

Weil Query-Strings keine Typinformationen tragen. ?count=5 und ?count=true sind beides nur Text. Automatisches Casten zu Zahlen oder Booleans lässt ein Happy-Path-Beispiel ordentlich aussehen, verursacht aber stille Bugs in dem Moment, in dem ein Kundenname "1" lautet oder jemand ?id=007 schreibt. Die Ausgabe bleibt String; konvertiere in deinem Code, wo du das Schema kennst.

Wie geht es mit Unicode und Emoji um?

Sauber. URLSearchParams dekodiert die Bytes prozentual und interpretiert sie dann als UTF-8 — also wird ?name=%E4%B8%AD%E6%96%87 zu "name": "中文", und Emojis wie ?reaction=%F0%9F%94%A5 werden zu "reaction": "🔥". JSON.stringify escapt anschließend, was nach RFC 8259 §7 escapt werden muss.

Weitere URL- & JSON-Werkzeuge

Einen Query-String zu dekodieren ist eine Operation. Was sich gut damit kombinieren lässt: