Query String

JSON

Query String’den JSON’a ne işe yarar?

Sola bir query string yapıştırırsın — başında ? olsa da olmasa da — ve sağ taraf bir JSON nesnesiyle dolar. Değerler yol boyunca URL’den çözülür (yani customer=Ava%20Chen, "customer": "Ava Chen" olur), ve aynı anahtar birden fazla kez geçiyorsa bir JSON dizisine toplanır. Bu sonuncusu, çoğu doğaçlama string ayırma kodunun yanlış yaptığı kısımdır, bu sayfanın varlık nedeni de budur.

Parse işlemi tarayıcıda yerleşik URLSearchParams kullanır — modern her web framework’ündeki request.query’yi besleyen şeyle aynısı. URLSearchParams, WHATWG URL Standard’ından application/x-www-form-urlencoded kurallarını takip eder — bir form POST ettiğinde tarayıcıların gönderdiği biçim. Çıktı sonra JSON.stringify ile RFC 8259’a göre serileştirilir.

Her şey tarayıcında çalışır. Girdin tam bir URL ise sayfa esnek davranır — query kısmını senin için çıkarır. Sadece URL bileşenlerini istiyorsan (host, path vs.), onun yerine URL’den JSON’a kullan. JSON’u tutmadan parametrelere bakmak yetiyorsa URL Parser sayfası daha iyi oturur. Burada geçerli olan yüzde kodlama kuralları RFC 3986 §2.1’de tanımlanır.

Bir Query String’i JSON’a Nasıl Dönüştürürsün

Üç adım. Her biri bu sayfadaki bir butona karşılık gelir.

1

Query String’i Yapıştır

Query string’i sol panele bırak. Başındaki ?’yu da bırakabilirsin — parser onu temizler. Örnek’e tıklayarak yüzde kodlanmış değerler, köşeli parantez gösterimi ve tekrar eden bir tag anahtarı içeren gerçekçi bir e-ticaret filtresi URL’si yükle. Örnek:

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

<code>https://shop.example.com/orders?...</code> gibi tam bir URL de yapıştırabilirsin, sayfa query kısmını sana çıkarır.

2

JSON Nesnesini Oku

Sağ panel sen yazdıkça güncellenir. Her parametre bir anahtardır, her değer çözülmüştür ve tekrar eden anahtarlar dizilere döner. Yani yukarıdaki örnek "customer": "Ava Chen", "total[gte]": "49.99" ve "tag": ["premium", "verified"] üretir. Sayılar string olarak kalır — query string’ler tip bilgisi taşımaz, taklit etmek sadece hataları gizler.

3

Kopyala, İndir veya Küçült

Kopyala ile JSON’u panoya gönder, İndir ile querystring.json olarak kaydet, ya da Küçült ile tek satıra sıkıştır. Temizle giriş panelini sıfırlar.

Bunu Gerçekten Kullanacağın Anlar

İstek loglarında hata ayıklama

Sunucu logları tüm istek satırını query string ile birlikte döker. Bir müşterinin aramasının neden boş döndüğünü kovalarken loglardan ?customer=Marco%20Rivera&status=cancelled&date_from=2026-04-01&date_to=2026-04-30’u bu sayfaya kopyalamak, her değeri kafadan URL’den çözmekten daha hızlıdır. JSON, gerçek filtre değerlerini bariz hale getirir.

Gerçek trafikten test fixture’ları üretme

12 query parametresi alan bir endpoint için test yazıyorsun. Production’dan gerçek bir URL al, query string’i buraya yapıştır ve JSON’u testindeki parametre nesnesi olarak kullan. Gerçek isimler, gerçek şekiller, yakalanan gerçek bug’lar — kafadan customer: "ORD-1001" uydurmaktan çok daha iyi.

Query string konvansiyonları arasında geçiş

Farklı stack’ler dizileri farklı kodlar — ?tag=red&tag=blue, ?tag[]=red&tag[]=blue, ?tag=red,blue. Önce JSON’a çevirmek sana nötr bir ara biçim verir. Oradan hedef konvansiyona dönüşmek regex arkeolojisi yerine 5 satırlık bir script olur.

OAuth, webhook ve analytics callback’leri

OAuth callback’leri ?code=abc&state=xyz olarak döner. Stripe veya GitHub gibi servislerin webhook URL’leri metadata’yı query string’e tıkıştırır. Analytics yönlendirmeleri üstüne bir düzine UTM ve tracking parametresi yığar. Sadece query kısmını buraya yapıştırarak host’u önce ayıklamak zorunda kalmadan parametre nesnesine direkt ulaşırsın.

Sık Sorulan Sorular

Baştaki soru işaretini eklemem gerekiyor mu?

Hayır — olsun ya da olmasın yapıştır. Parser baştaki ?’yu görürse temizler. Hatta tam bir URL (https://api.shop.example.com/orders?customer=Ava%20Chen) yapıştırabilirsin, sayfa query kısmını çıkarır.

Tekrar eden anahtarlar nasıl ele alınıyor?

Bir JSON dizisine toplanırlar. Yani ?tag=premium&tag=verified, "tag": ["premium", "verified"] olur. Bu davranış URLSearchParams.getAll() ile ve Express, FastAPI, ASP.NET ve Spring’in query string’leri parse etme şekliyle örtüşür.

Peki ?debug ya da ?dry-run gibi değersiz anahtarlar?

Boş string olurlar — "debug": "". URLSearchParams, WHATWG URL Standard’a göre =’siz bir anahtarı key= ile aynı sayar. Gerçek bir boolean lazımsa, obj.debug = "debug" in obj gibi bir şeyle JSON’u son işlemden geçir.

Peki ?items[]=1&items[]=2 gibi köşeli parantez gösterimi?

Köşeli parantezler anahtarın parçası olarak korunur — çıktıda "items[]": ["1", "2"] görürsün. Bu, telde gezen byte’lara karşı dürüst bir gösterim. Senin framework’ün (PHP, Rails, qs.js) köşeli parantezlerin sökülmesini ya da iç içe nesnelere açılmasını gerektiriyorsa, bunu son işlem adımı olarak yap.

Sayı veya boolean gibi görünseler de tüm değerler neden string?

Çünkü query string’ler tip bilgisi taşımaz. ?count=5 da ?count=true da sadece metin. Otomatik olarak sayı ya da boolean’a zorlamak, mutlu yol örneklerinde temiz görünür ama bir müşterinin adı "1" olduğu ya da biri ?id=007 yazdığı an sessiz hatalar üretir. Çıktı string olarak kalır; şemayı bildiğin kendi kodunda dönüştür.

Unicode ve emoji nasıl ele alınıyor?

Temiz şekilde. URLSearchParams byte’ları yüzde-çözer, sonra UTF-8 olarak yorumlar — yani ?name=%E4%B8%AD%E6%96%87, "name": "中文" olur ve ?reaction=%F0%9F%94%A5 gibi emojiler "reaction": "🔥" olur. Sonra JSON.stringify RFC 8259 §7’ye göre escaplanması gerekenleri escapler.

Diğer URL & JSON Araçları

Bir query string’i çözmek tek bir işlem. Yanına iyi giden başka şeyler: