Query String para JSON
Decodifica uma query string de URL em um objeto JSON — chaves repetidas viram arrays
Query String
JSON
O que o Query String para JSON faz?
Você cola uma query string à esquerda — com ou sem o ? inicial — e o lado direito é preenchido com um objeto JSON. Os valores são decodificados pelo caminho (então customer=Ava%20Chen vira "customer": "Ava Chen"), e se a mesma chave aparecer mais de uma vez, ela vira um array JSON. Esse último ponto é o que a maioria dos splits improvisados erra, e é por isso que esta página existe.
O parsing usa o URLSearchParams embutido no navegador — o mesmo que alimenta request.query em todo framework web moderno. URLSearchParams segue as regras de application/x-www-form-urlencoded do padrão URL da WHATWG, que é o que os navegadores enviam quando um formulário faz POST. A saída é então serializada via JSON.stringify conforme RFC 8259.
Tudo roda no seu navegador. Se sua entrada for uma URL completa, a página é tolerante — ela extrai a parte da query pra você. Se você só quer os componentes da URL em si (host, path, etc.), use URL para JSON. Se você só quer olhar os parâmetros sem manter o JSON, a página URL Parser é mais adequada. As regras de codificação percentual em jogo aqui são definidas pela RFC 3986 §2.1.
Como converter uma Query String em JSON
Três passos. Cada um corresponde a um botão nesta página.
Cole a Query String
Jogue a query string no painel da esquerda. Incluir o ? inicial está OK — o parser remove. Clique em Exemplo para carregar uma URL realista de filtro de e-commerce com valores em codificação percentual, notação com colchetes e uma chave tag repetida. Exemplo:
?customer=Ava%20Chen&status=active&total%5Bgte%5D=49.99&page=2&tag=premium&tag=verifiedVocê também pode colar uma URL completa como <code>https://shop.example.com/orders?...</code> e a página vai extrair a parte da query.
Leia o objeto JSON
O painel da direita atualiza enquanto você digita. Cada parâmetro é uma chave, cada valor é decodificado e chaves repetidas viram arrays. Então o exemplo acima produz "customer": "Ava Chen", "total[gte]": "49.99" e "tag": ["premium", "verified"]. Números continuam strings — query strings não carregam informação de tipo, então fingir que carregam só esconderia bugs.
Copiar, baixar ou minificar
Clique em Copiar para mandar o JSON para a área de transferência, Baixar para salvar como querystring.json, ou Minificar para compactá-lo em uma linha. Limpar reseta o painel de entrada.
Quando você usa isso de verdade
Debugando logs de requisição
Logs de servidor despejam a linha de requisição inteira, query string junto. Quando você está caçando por que a busca de um cliente não retornou nada, copiar ?customer=Marco%20Rivera&status=cancelled&date_from=2026-04-01&date_to=2026-04-30 do log para esta página é mais rápido do que decodificar cada valor mentalmente. O JSON deixa os filtros reais óbvios.
Gerando fixtures de teste a partir de tráfego real
Você está escrevendo testes contra um endpoint que aceita 12 parâmetros de query. Pega uma URL real de produção, cola a query string aqui e usa o JSON como objeto de parâmetros no seu teste. Nomes reais, formatos reais, bugs reais pegos — bem melhor que inventar customer: "ORD-1001" de cabeça.
Migrando entre convenções de query string
Cada stack codifica arrays de um jeito diferente — ?tag=red&tag=blue, ?tag[]=red&tag[]=blue, ?tag=red,blue. Converter primeiro para JSON dá um formato intermediário neutro. A partir daí, transformar pra convenção alvo é um script de 5 linhas em vez de arqueologia com regex.
OAuth, webhooks e callbacks de analytics
Callbacks de OAuth voltam como ?code=abc&state=xyz. URLs de webhook de serviços como Stripe ou GitHub enfiam metadados na query string. Redirecionamentos de analytics empilham uma dúzia de parâmetros UTM e de tracking por cima. Colando só a parte da query aqui você vai direto pro objeto de parâmetros sem ter que tirar o host primeiro.
Perguntas frequentes
Preciso incluir o ponto de interrogação inicial?
Não — cole com ou sem ele. O parser remove o ? inicial se vir um. Você pode até colar uma URL completa (https://api.shop.example.com/orders?customer=Ava%20Chen) e a página vai extrair a parte da query.
Como chaves repetidas são tratadas?
Elas viram um array JSON. Então ?tag=premium&tag=verified vira "tag": ["premium", "verified"]. Isso bate com o comportamento de URLSearchParams.getAll() e como Express, FastAPI, ASP.NET e Spring parseiam query strings.
E chaves sem valor como ?debug ou ?dry-run?
Viram strings vazias — "debug": "". URLSearchParams trata uma chave sem = igual a key=, conforme o padrão URL da WHATWG. Se você precisa de um booleano de verdade, pós-processa o JSON com algo como obj.debug = "debug" in obj.
E notação com colchetes como ?items[]=1&items[]=2?
Os colchetes são mantidos como parte da chave — você verá "items[]": ["1", "2"] na saída. Isso é honesto com os bytes que vieram pelo fio. Se seu framework (PHP, Rails, qs.js) precisa que os colchetes sejam removidos ou expandidos em objetos aninhados, faça isso como pós-processamento.
Por que todos os valores são strings, mesmo parecendo números ou booleanos?
Porque query strings não carregam informação de tipo. ?count=5 e ?count=true são só texto. Auto-converter pra número ou booleano deixa um exemplo do happy path bonitinho mas causa bugs silenciosos no momento em que o nome de um cliente é "1" ou alguém escreve ?id=007. A saída fica como string; converta no seu código onde você sabe o schema.
Como ele lida com Unicode e emoji?
Limpinho. URLSearchParams decodifica os bytes em percentual e os interpreta como UTF-8 — então ?name=%E4%B8%AD%E6%96%87 vira "name": "中文" e emojis como ?reaction=%F0%9F%94%A5 viram "reaction": "🔥". JSON.stringify então escapa o que precisa ser escapado conforme RFC 8259 §7.
Outras ferramentas de URL & JSON
Decodificar uma query string é uma operação. Veja o que combina bem: