De query string a JSON
Pega una URL completa o solo el query string y obtén JSON limpio al instante. Se manejan la notación de corchetes como user[name]=Ann, los arrays como tags[]=a&tags[]=b, las claves repetidas y la codificación porcentual, y el convertidor también funciona al revés: JSON de entrada, query string de salida.
Última actualización:
Parámetros
Cómo usar De query string a JSON
- Elige la dirección: de query string a JSON o de JSON a query string.
- Pega tu entrada: funciona una URL completa; se usa la parte después de ? y se ignora el #fragmento.
- Elige las opciones: cómo tratar las claves repetidas, la notación de punto, el + como espacio y la detección de tipos.
- Consulta el resultado a la derecha; se actualiza mientras escribes. La tabla muestra cada parámetro decodificado.
- Copia o descarga el JSON o el query string.
Sintaxis de query string que entiende este convertidor
| Query string | Resultado JSON |
|---|---|
name=Ann&age=31 | {"name": "Ann", "age": "31"} |
user[name]=Ann&user[city]=Oslo | {"user": {"name": "Ann", "city": "Oslo"}} |
tags[]=a&tags[]=b | {"tags": ["a", "b"]} |
items[0][id]=7&items[1][id]=9 | {"items": [{"id": "7"}, {"id": "9"}]} |
color=red&color=blue | {"color": ["red", "blue"]} (o el primer/último valor) |
a.b=1 (notación de punto activada) | {"a": {"b": "1"}} |
q=caf%C3%A9+au+lait | {"q": "café au lait"} |
debug (sin =) | {"debug": ""} |
Reglas de codificación que conviene conocer
- Codificación porcentual: los caracteres reservados se escriben como
%más dos dígitos hexadecimales de sus bytes UTF-8, así queése convierte en%C3%A9,&en%26y=en%3D. - Espacios:
+en la codificación de formularios HTML,%20en URL genéricas. Un signo más literal debe enviarse como%2B. - Corchetes:
[y]son técnicamente reservados y a menudo se envían como%5By%5D; los servidores los decodifican antes de analizar las claves anidadas, y esta herramienta también. - Todo es una cadena: un query string no tiene tipos.
page=2es el texto "2" hasta que tu código lo convierte. - El orden se conserva en la salida JSON exactamente como aparecen los parámetros en la URL.
Cómo analizar query strings en código
JavaScript: Object.fromEntries(new URLSearchParams(location.search)) da un objeto plano (gana el último valor, sin anidación). Para corchetes anidados usa la biblioteca qs: qs.parse(str). PHP llena $_GET automáticamente con las mismas reglas de corchetes, urllib.parse.parse_qs de Python devuelve un dict de listas y Ruby on Rails expone params anidados.
Preguntas frecuentes
¿Cómo se convierten los parámetros anidados como user[address][city]?
Cada segmento entre corchetes se convierte en un nivel de anidación, así que user[address][city]=Paris se convierte en {"user": {"address": {"city": "Paris"}}}. Los corchetes vacíos (tags[]=a) añaden elementos a un array, y los corchetes numéricos (items[0]=x) fijan una posición del array. Es la convención que usan PHP, Ruby on Rails y la biblioteca qs de Node.js.
¿Qué pasa con las claves repetidas sin corchetes?
El estándar de URL permite la misma clave varias veces (color=red&color=blue). De forma predeterminada, esta herramienta las agrupa en un array, como la mayoría de los frameworks de servidor. Puedes cambiar para conservar solo el primer o el último valor, que es lo que devuelven algunos frameworks y URLSearchParams.get().
¿Por qué + se convierte en un espacio?
En el formato application/x-www-form-urlencoded que usan los formularios HTML y los query strings, un espacio se codifica como + y un signo más literal como %2B. Si tu cadena viene de una fuente que codifica los espacios solo como %20 y usa + de forma literal, desactiva la opción + como espacio.
¿Los valores se convierten en números o booleanos?
No de forma predeterminada, porque todos los valores de un query string son texto y "007" o "1e3" cambiarían de significado. Activa Detectar tipos para convertir números simples, true, false y null. Los ceros a la izquierda y los enteros muy grandes se conservan como cadenas.
¿Qué formato de array debo usar para pasar de JSON a query string?
Usa brackets (a[]=1&a[]=2) para PHP, Rails y Express con qs; indices (a[0]=1&a[1]=2) cuando importen el orden o los objetos anidados en arrays; repeat (a=1&a=2) para Python, Go, Java Spring y URLSearchParams; y comma (a=1,2) solo cuando tu API lo documente.
¿Se envían mis datos a un servidor?
No. El análisis y la codificación ocurren por completo en JavaScript en tu navegador, así que las URL que contienen tokens o datos personales nunca salen de tu dispositivo.
¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?
Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.
Herramientas relacionadas
Ver todas las de Conversores de datos y formatos de archivo →