Conversor de query string para JSON
Uma query string é fácil de reconhecer, mas torna-se difícil de inspecionar quando contém caracteres codificados, valores vazios, filtros repetidos e sinalizadores específicos de uma aplicação.
Executar grátis
Este conversor de query string para JSON transforma esse formato compacto de transporte em um objeto estruturado que você pode ler, copiar, comparar ou integrar a um fluxo de depuração. Ele decodifica escapes percentuais como UTF-8, interpreta sinais de mais como espaços, mantém valores vazios visíveis e representa nomes de parâmetros repetidos como listas na ordem original. A transformação é determinística e adequada para analisar requisições, montar dados de teste, revisar logs e desenvolver ferramentas internas.
Transforme parâmetros compactos em um objeto fácil de inspecionar
Query strings foram criadas para transportar dados, não para oferecer uma leitura confortável. Um navegador ou cliente pode enviar em uma única linha compacta um termo de busca, várias etiquetas selecionadas, um campo opcional vazio e uma localização com caracteres internacionais. Cole no conversor a parte que vem depois do caminho da URL, com ou sem o ponto de interrogação inicial, e o resultado separará cada parâmetro em uma propriedade JSON. Um parâmetro escrito sem sinal de igual é mantido com uma string vazia, assim como um parâmetro seguido explicitamente por um sinal de igual sem conteúdo. Segmentos vazios entre os sinais de e comercial são ignorados, pois não contêm parâmetros. Isso permite comparar a saída com o estado da aplicação: os valores ficam visíveis, os vazios não somem e os contadores mostram tanto as chaves distintas quanto o total de pares processados. O analisador não acessa o servidor de destino nem deduz tipos de negócio; valores como true, 42 e null continuam sendo strings. Esse comportamento previsível torna o JSON uma representação fiel do que a consulta realmente transportou.
Entenda a decodificação e o tratamento de chaves repetidas
Cada chave e cada valor são decodificados separadamente segundo as regras convencionais de formulários web. Um sinal de mais vira espaço, enquanto escapes percentuais como %20 e sequências UTF-8 com vários bytes tornam-se os caracteres pretendidos. O sinal de igual é especial somente em sua primeira ocorrência dentro de cada par; por isso, um valor pode conter outros sinais de igual sem ser dividido novamente. Chaves repetidas são preservadas em vez de sobrescritas: a primeira ocorrência começa como string, a segunda transforma a propriedade em uma lista e as próximas são acrescentadas na ordem recebida. Por exemplo, tag=sale&tag=new produz uma lista tag com sale antes de new. Isso ajuda a analisar filtros, grupos de caixas de seleção e frameworks que serializam múltiplas escolhas sob um único nome. Escapes percentuais inválidos geram um erro de entrada em vez de uma decodificação parcial, e bytes codificados que não formam UTF-8 válido também são recusados. Essa falha estrita evita que um resultado aparentemente plausível esconda uma requisição malformada. pair_count inclui repetições, enquanto key_count informa quantos nomes decodificados são distintos.
Use o resultado em testes, logs e diagnóstico de requisições
O objeto convertido funciona bem sempre que você precisa compreender uma consulta antes que o código aja sobre ela. Durante o desenvolvimento de uma API, cole a query string de uma requisição com falha e compare o JSON decodificado aos parâmetros esperados pela rota. Em testes automatizados, converta strings representativas em dados estáveis e confirme que filtros repetidos, texto internacional, sinais de mais e campos vazios chegam no formato previsto. Ao revisar logs, a estrutura é mais fácil de ler e comparar do que uma linha longa codificada, especialmente quando a mesma chave aparece várias vezes. O conversor evita deliberadamente coerção de esquema: se a sua aplicação espera número, booleano, data ou uma convenção aninhada com colchetes, aplique depois a validação específica dela. Esse limite impede que uma ferramenta genérica invente significados que o remetente não declarou. Os nomes de propriedades são tratados com segurança como dados, inclusive quando lembram elementos internos do JavaScript. Use a versão no navegador para verificações rápidas ou chame a API por US$ 0,002 quando um pipeline, executor de testes ou fluxo de observabilidade precisar repetir a mesma conversão determinística.
Casos de uso
Depure uma requisição de API
Decodifique a consulta exata enviada por um cliente e compare chaves, valores vazios e filtros repetidos com o contrato da rota.
Crie dados de teste estáveis
Transforme query strings representativas em resultados JSON determinísticos para testes de integração e regressão.
Inspecione dados codificados em logs
Torne os parâmetros codificados legíveis antes de investigar buscas, redirecionamentos ou integrações de rastreamento.
Perguntas frequentes
Quanto custa o conversor?
A ferramenta no navegador é gratuita. As requisições à API usam o preço-base publicado de US$ 0,002.
Posso incluir o ponto de interrogação inicial?
Sim. A entrada pode começar com um ponto de interrogação ou conter apenas os caracteres posteriores.
Como os nomes de parâmetros repetidos são representados?
Uma chave que aparece uma vez tem valor de string. Quando se repete, os valores formam uma lista na ordem original.
A ferramenta decodifica sinais de mais e escapes percentuais?
Sim. Sinais de mais viram espaços, e bytes percentuais válidos são decodificados como UTF-8 nas chaves e nos valores.
Ela converte números e booleanos em tipos JSON?
Não. Os parâmetros retornam como strings para que o conversor não presuma um esquema nem altere os dados enviados.
Para desenvolvedores — acesso via API
Tudo nesta página está disponível via API. Esta seção é para equipes que querem integrar a ferramenta aos próprios sistemas; quem não precisa disso pode simplesmente usar a ferramenta acima.
Endpoint
Autenticação por token Bearer. Um único POST coloca a tarefa na fila; o resultado chega por webhook ou link assinado.
Chame do seu código
curl -X POST https://api.kit.forhosting.com/dev/query-string-to-json \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"?search=blue+shoes&tag=sale&tag=new&city=S%C3%A3o+Paulo&empty="}'const res = await fetch("https://api.kit.forhosting.com/dev/query-string-to-json", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "?search=blue+shoes&tag=sale&tag=new&city=S%C3%A3o+Paulo&empty="
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev/query-string-to-json",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "?search=blue+shoes&tag=sale&tag=new&city=S%C3%A3o+Paulo&empty="
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev/query-string-to-json", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"?search=blue+shoes&tag=sale&tag=new&city=S%C3%A3o+Paulo&empty="}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"?search=blue+shoes&tag=sale&tag=new&city=S%C3%A3o+Paulo&empty="}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev/query-string-to-json", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemplo de requisição
{
"text": "?search=blue+shoes&tag=sale&tag=new&city=S%C3%A3o+Paulo&empty="
}Exemplo de resposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev.query_string_to_json",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}A API é assíncrona: cada chamada devolve um task_id na hora. Se preferir polling, consulte o status a até 1 requisição por segundo.
Preço
Preço publicado, sem tokens nem créditos escondidos. Tarefa que falha não é cobrada.
Erros
| HTTP | Código | O que significa |
|---|---|---|
401 | unauthorized | Token ausente ou inválido. Confira o header Authorization. |
402 | insufficient_balance | Saldo insuficiente para esta tarefa. Faça uma recarga e tente de novo. |
404 | unknown_type | Esse tipo de tarefa não existe. Confira o campo type no catálogo. |
429 | rate_limited | Muitas requisições em pouco tempo. Espere um instante e tente de novo. |