JSON a cadena de consulta
Este conversor codifica un objeto JSON como una cadena de consulta de URL en tu navegador. Los objetos anidados usan la convención de corchetes a[b]=c, las matrices repiten su clave, los valores se codifican porcentualmente según RFC 3986 con espacios como %20, y null se convierte en una clave con un valor vacío. No se sube nada.
JSON a cadena de consulta: explicación
Todo objeto JSON que haya viajado como parámetro de petición GET se ha aplanado en una sola línea de pares clave=valor, y ese aplanamiento implicaba decisiones: cómo se representa el anidamiento, cómo repiten las matrices, qué pasa con null. Este conversor hace esas decisiones explícitas y convencionales — los objetos se anidan como a[b]=c, las matrices repiten su clave, y el resultado es una línea codificada porcentualmente, lista para pegar después de un ?.
Ninguna de estas convenciones se ha inventado aquí. El estilo de corchetes es el que PHP's http_build_query y Ruby on Rails han emitido durante dos décadas, y todo analizador serio de cadenas de consulta lo vuelve a leer en una estructura. La codificación sigue RFC 3986: los caracteres no reservados se mantienen legibles, los espacios se convierten en %20, y un signo más literal se convierte en %2B para que sobreviva tanto a analizadores de modo formulario como a analizadores estrictos.
Como en todas las páginas de este sitio, el trabajo ocurre en la pestaña que abrió la página: tu JSON se analiza y codifica por código en la página, y nada cruza la red. El Content-Security-Policy prohíbe las conexiones salientes por completo, así que que el panel Network de DevTools permanezca vacío mientras conviertes es toda la garantía de privacidad, demostrada en lugar de afirmada.
La cadena que esta página construye es exactamente lo que el conversor hermano del sitio puede decodificarlo de vuelta a JSON así que un viaje de ida y vuelta es una buena comprobación de cordura antes de enviar la URL.
Si solo necesitas escapar un único valor en lugar de estructurar un objeto completo, el codificador y decodificador de URL maneja una cadena cada vez bajo las mismas reglas RFC 3986.
Cómo funciona realmente la codificación
El conversor recorre el objeto analizado en orden de claves y emite un par por elemento, unidos con &. Cada valor se convierte en cadena antes de codificarse — números como dígitos simples, booleanos como true o false, null como un valor vacío — y luego se codifica porcentualmente como UTF-8. Las reglas de estructura son:
- Objetos: un objeto anidado extiende la ruta de la clave con corchetes. {"user": {"name": "Ada"}} se convierte en user[name]=Ada, y un nivel más profundo añade otro grupo de corchetes: user[address][city]=London.
- Matrices: una matriz de escalares repite su clave una vez por elemento — tag=navy&tag=math —, el estilo que Rack y el analizador qs de Node leen de vuelta en matrices.
- null: se convierte en una clave con un valor vacío (token=), lo que mantiene la clave presente en la URL en lugar de eliminarla.
- Objetos y matrices vacíos: no emiten nada para esa clave, porque no hay par que escribir; la ausencia de la clave se muestra en la vista previa para que sea una decisión, no una sorpresa.
Codificación porcentual, estilo RFC 3986
RFC 3986 deja el conjunto no reservado — A–Z, a–z, 0–9, guion, punto, guion bajo y tilde — exactamente como están escritos y requiere que todo lo demás se codifique porcentualmente byte a byte como UTF-8. Un espacio es %20, no +. El hábito de usar el signo más para espacios pertenece a application/x-www-form-urlencoded, una convención de formularios más antigua que todavía causa errores reales: un lector estricto de RFC 3986 decodifica un + literal como un signo más. Emitir %20 para espacios y %2B para signos más significa que la salida signifique lo mismo para ambos tipos de lectores.
Una excepción deliberada: los corchetes en las claves se emiten literalmente, porque así es como se ve la convención a[b]=c en la práctica — PHP y Rails tampoco los escapan. Los corchetes son estructura, no contenido. Los valores se codifican de forma estricta, y el decodificador inverso de este sitio acepta tanto corchetes literales como corchetes escapados con %5B/%5D.
Cómo es la salida
El ejemplo a continuación es el par exacto que produce el botón Cargar ejemplo: parámetros de búsqueda con un objeto de usuario anidado, una clave tag repetida y un token null. El orden de las claves sigue el documento JSON, por lo que volver a codificar una cadena reanalizada es estable — el mismo objeto siempre produce la misma URL, lo que importa cuando estás comparando enlaces, usando caché o escribiendo pruebas para ellos.
Casos límite que este conversor rechaza en lugar de corromper
Dos formas no tienen una codificación honesta bajo estas convenciones, y ambas se rechazan con un error con nombre en lugar de una suposición creativa:
- Una matriz de nivel superior — una cadena de consulta no tiene espacio para claves sin nombre. Envuelve la matriz en un objeto bajo una clave, y la convención de repetición se encarga del resto.
- Matrices de objetos — tag[name]=a&tag[name]=b colapsaría dos registros en una ruta de clave, e inventar índices como tag[0][name] añadiría estructura que nunca pediste. El conversor rechaza y nombra la clave ofensora.
Preguntas frecuentes
¿Convertir JSON a una cadena de consulta sube mis datos a algún sitio?
No. El JSON se analiza y codifica enteramente dentro de esta pestaña del navegador; la página no tiene punto final de subida, y su Content-Security-Policy prohíbe conexiones con ningún otro sitio, por lo que la exfiltración es estructuralmente imposible en lugar de solo prometida. Verifícalo en treinta segundos: abre DevTools, cambia al panel Network, convierte, y observa que no aparece ninguna petición.
¿Por qué un espacio se codifica como %20 y no como +?
Porque el signo más para espacios es la convención application/x-www-form-urlencoded, mientras que RFC 3986 — la gramática URI misma — requiere %20 y trata un + literal como un signo más. Codificar %20 y %2B significa inequívocamente que analizadores de modo formulario y estrictos decodifican tu valor de forma idéntica. Los navegadores son indulgentes de cualquier manera; el riesgo está en el lector estricto de una URL firmada o una capa de caché, y es precisamente donde la ambigüedad es cara.
¿Por qué el anidamiento usa la notación a[b]=c?
Es el estándar de facto de la escritura con corchetes, emitido por PHP's http_build_query y Ruby on Rails durante dos décadas y vuelto a leer en estructura anidada por librerías como qs (Node) y Rack (Ruby). Existen alternativas — puntos, dos puntos, claves profundas repetidas —, pero ninguna tiene ni de lejos el soporte de lectores, y un formato de intercambio debe optimizarse para la audiencia más amplia.
¿Cómo se codifican las matrices y por qué no se usa la notación tag[]?
Las matrices de escalares repiten la clave: tag=navy&tag=math. Servidores como Rack y qs de Node recogen claves repetidas en matrices al analizar, por lo que el viaje de ida y vuelta es limpio. La excepción es PHP, que necesita tag[] para construir una matriz — una escritura que este conversor nunca emite, porque los corchetes están reservados para el anidamiento de objetos aquí. Si PHP es el destino, añade los corchetes vacíos a la clave después de convertir.
¿Qué se convierten en null, booleanos y números?
null se convierte en una clave con un valor vacío — token= —, lo que mantiene la clave presente en la URL. Los booleanos se convierten en el texto literal true o false, y los números en dígitos decimales simples sin formato de configuración regional ni separadores de millares. La cadena vacía también se convierte en un valor vacío; una cadena de consulta no puede distinguirlo de null, y el decodificador inverso lee un valor vacío de nuevo como null por diseño.
¿Qué caracteres se dejan sin codificar?
Exactamente el conjunto no reservado de RFC 3986: A–Z, a–z, 0–9, guion, punto, guion bajo y tilde. Todo lo demás — espacios, ampersands, barras, letras acentuadas, emoji — se codifica porcentualmente byte a byte como UTF-8. Los corchetes en las claves son la única excepción visible, emitidos literalmente porque son la convención de anidamiento en sí; los valores nunca reciben ese tratamiento.
¿Qué herramientas relacionadas debería usar después?
- Cadena de consulta a JSONConvertidor que funciona en tu navegadorAbrir
- Codificar y decodificar URLCodifica y decodifica distinguiendo + de %20Abrir
- Formatear JSONIndenta, ordena claves y quita comentariosAbrir
- Validar JSONValida la sintaxis con línea y columna exactas y repara los erroresAbrir
- Herramientas de codificaciónBase64, codificación de URL, hashes e inspección de tokens.Abrir
- Qué es JSONGuía en lenguaje sencilloAbrir