100 % local — seus dados nunca saem do seu navegador

Query string para JSON — cole a URL inteira

Transforme uma query string de URL em JSON. Cole o endereço inteiro se quiser: os parâmetros saem como objeto, legível linha a linha.

Instantâneo Privado Zero cookies
Indentação

Entrada Query String

Saída JSON

O que esta ferramenta faz

Uma query string vira um objeto JSON.

?q=json+to+yaml&page=2&tag=a&tag=b
{
  "q": "json to yaml",
  "page": "2",
  "tag": ["a", "b"]
}

+ vale um espaço e %C3%A9 vale é: a codificação por porcentagem é decodificada para você, o que costuma ser o motivo da visita. Uma chave repetida vira um array, na ordem em que os valores apareceram.

Cole o endereço inteiro

https://x.dev/search?q=ada&lang=pt#resultados
{
  "q": "ada",
  "lang": "pt"
}

Colar uma URL inteira é o que quase todo mundo faz, e a ferramenta fazia uma chave com tudo o que vinha antes da consulta: https://x.dev/search?q. O resultado parecia dado e não fazia sentido. Agora o endereço antes do primeiro ponto de interrogação é descartado, e o fragmento depois dele também — o location.search também não o carrega. Era um defeito real, encontrado ao escrever esta página e corrigido.

Um ponto de interrogação dentro de um valor fica onde está: a=1?2 dá {"a": "1?2"}, porque o ponto que abre uma consulta vem antes do primeiro =, não depois.

Tudo é string

?id=007&active=true&count=3
{
  "id": "007",
  "active": "true",
  "count": "3"
}

Uma query string carrega texto. 007 não é 7, true não é um booleano, e um conversor que adivinhasse reescreveria em silêncio um identificador. A tipagem fica do seu lado, onde você sabe que count é número e que id é uma referência com os zeros dela.

O que fica intocado

  • As chaves com colchetes. a[]=1 e o[b]=2 mantêm a[] e o[b] como nomes. PHP e Rails leem arrays e objetos ali; outras pilhas não, e a própria string não diz quem a escreveu.
  • A ordem das chaves. Elas saem como entraram, primeira ocorrência primeiro.
  • Os valores vazios. ?a&b= dá {"a": "", "b": ""} — um parâmetro sem valor está presente, e muitas vezes é justamente o que ele quer dizer.

Privado por padrão

Tudo é executado localmente no seu navegador com JavaScript. Os seus dados nunca são enviados para um servidor, o que torna a ferramenta segura para conteúdo sensível e funciona offline.

Perguntas frequentes

Posso colar uma URL inteira?
Pode, desde que esta página foi escrita. Antes, `https://x.dev/p?a=1` devolvia uma chave chamada `https://x.dev/p?a` — o endereço na frente da consulta passava a fazer parte dela, e o resultado parecia dado. Agora tudo o que vem antes do primeiro ponto de interrogação é descartado, e o `#fragmento` depois dele também, exatamente como faz um navegador ao preencher `location.search`.
Por que todo valor é string?
Porque uma query string não tem tipos. `?page=2` e `?page=02` são duas strings diferentes, e a segunda significa algo em muitas APIs: uma referência preenchida, uma versão. Ler qualquer uma como o número 2 decidiria por você e perderia a diferença. Converta do seu lado, onde você sabe o que é o parâmetro.
E `a[]=1&a[]=2`?
A chave continua `a[]`, exatamente como está escrita. Os colchetes são uma convenção — PHP e Rails leem arrays ali, muitas outras pilhas não — e uma query string não diz qual delas a produziu. Já uma chave repetida sem colchetes (`a=1&a=2`) vira array: é a única coisa que a própria sintaxe torna inequívoca.

Conversores relacionados