Convertir objeto JSON a query string
Construya el final de una dirección web con sus valores sin romperla: un nombre, una ciudad, un indicador de sí o no y una puntuación dan 4 parámetros, y Ada Lovelace viaja seguro como Ada%20Lovelace. Recibe el resultado con y sin el signo de interrogación. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.
Unir a mano ampersands y signos de igualdad falla en cuanto un valor contiene un espacio, un ampersand, una letra no ASCII o un carácter reservado.
De un objeto plano a una cadena de consulta codificada
Una cadena de consulta URL es una secuencia de campos nombre-igual-valor unidos por ampersands, opcionalmente precedida de un signo de interrogación tras la ruta. Esta capacidad recorre las claves propias del objeto en orden de inserción, convierte cada valor escalar a una cadena estable (los booleanos pasan a true o false, los números finitos usan notación decimal ordinaria, null se convierte en un valor vacío) y aplica encodeURIComponent a cada clave y cada valor para que los espacios sean percent-twenty, los ampersands percent-twenty-six y Unicode sobreviva al tránsito.
El resultado es una cadena de consulta sin inventar separadores extra a partir de caracteres especiales en bruto. Los objetos y arrays anidados no se admiten a propósito: un parámetro de consulta es un par clave-valor plano, y serializar estructura anidada en una sola cadena opaca ocultaría errores que el llamador suele querer corregir antes de que salga la petición.
Los objetos vacíos producen una cadena de consulta vacía y una forma con solo el prefijo de interrogación, útil en pruebas que afirman que no hay parámetros en lugar de inventar una clave ficticia. Los límites de longitud sobre el número de claves y el tamaño total serializado evitan que mapas patológicos agoten la memoria en la ruta gratuita del navegador.
Dónde resulta útil convertir valores en parámetros
Las aplicaciones de front-end que guardan chips de filtro y paginación como un objeto simple necesitan un único codificador antes de escribir location.search para que el texto con aspecto multi-valor no se parta en un ampersand en bruto. Los servicios de backend que registran peticiones de salida o construyen URL firmadas a partir de mapas de configuración necesitan las mismas reglas de codificación percent que el navegador para que tickets de soporte y logs de acceso coincidan con lo que el cliente envió de verdad.
La validación fallida no consume saldo. Mantenga los mapas planos y bajo los límites documentados, fije la consulta codificada en las pruebas y obtendrá cadenas de parámetros reproducibles para paneles, plugins LMS y workers de borde sin montar un kit completo de URL propio.
Qué puede hacer con ella
Construir location.search desde el estado de la app
Convierta un objeto plano de filtros o formulario en una cadena de consulta codificada en percent antes de escribir la barra de direcciones o la entrada de historial del navegador.
Preguntas frecuentes
¿Qué tipos de valor se admiten?
Cadenas, números finitos, booleanos y null. Null se convierte en un valor vacío tras el signo de igualdad.
¿Las claves y los valores se codifican en percent?
Sí. Tanto las claves como los valores se codifican con encodeURIComponent para que espacios, ampersands, signos de igualdad y caracteres no ASCII no inventen parámetros extra.
¿Qué pasa con un espacio o un ampersand dentro de un valor?
Se codifica para que no pueda partir la dirección por el lugar equivocado. Un espacio pasa a ser %20, como en Ada%20Lovelace, y los ampersands, las letras con tilde y otros caracteres reservados se codifican del mismo modo, igual que los envía el navegador.
¿Puedo convertir datos anidados o listas?
No. Solo se acepta un conjunto plano de nombres y valores. Una sección anidada o una lista se rechazan con un aviso claro, así nunca acaba con una dirección que parece válida pero lleva datos a medio estructurar.
¿Qué ocurre con un valor vacío?
Un valor vacío se convierte en un parámetro con su nombre y nada detrás del signo igual, de modo que el nombre sigue viajando. Un conjunto vacío da un resultado vacío, útil cuando necesita dejar claro que no se envía ningún parámetro.
¿Se conservan los parámetros en mi orden?
Sí. Salen en el orden en que aparecen los nombres en sus datos. En el ejemplo, name, city, active y score mantienen ese orden, y el resultado indica además cuántos parámetros hay.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/data/json-to-query-params \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"object":{"name":"Ada Lovelace","city":"London","active":true,"score":42}}'const res = await fetch("https://api.kit.forhosting.com/data/json-to-query-params", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"object": {
"name": "Ada Lovelace",
"city": "London",
"active": true,
"score": 42
}
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/data/json-to-query-params",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"object": {
"name": "Ada Lovelace",
"city": "London",
"active": true,
"score": 42
}
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/data/json-to-query-params", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"object":{"name":"Ada Lovelace","city":"London","active":true,"score":42}}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"object":{"name":"Ada Lovelace","city":"London","active":true,"score":42}}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/data/json-to-query-params", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"object": {
"name": "Ada Lovelace",
"city": "London",
"active": true,
"score": 42
}
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "data.json_to_query_params",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_mb | 25 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Las API, los enrutadores de front-end y los pipelines de analítica suelen guardar filtros y campos de formulario como un mapa JSON simple y, aun así, necesitan una cadena de consulta correctamente codificada para la barra de direcciones o un cliente HTTP de salida. Esta capacidad acepta un objeto JSON plano, convierte cada valor escalar a texto, codifica en percent cada clave y cada valor, y devuelve la cadena lista para anexar junto con pares ordenados y un mapa de cadenas normalizado. Los objetos y arrays anidados se rechazan con invalid_input para que el llamador no emita basura a medias que parezca una URL válida.
De un objeto plano a una cadena de consulta codificada
Cuando su fuente de verdad ya es un objeto JSON —por ejemplo un estado de filtros, un modelo de formulario o un mapa de configuración— necesita un modo determinista de convertir ese mapa al formato de cable que esperan navegadores y servidores. Como el camino es solo trabajo de cadenas y objetos, sin red, sin semillas aleatorias y sin reloj de pared, entradas idénticas producen siempre JSON idéntico. El precio de API en éxito es la base publicada de $0.002 por ítem, y los fallos de validación no consumen saldo prepago.
Contrato de entrada, forma de la respuesta y errores
El valor debe ser un objeto plano cuyas propiedades sean cadenas, números, booleanos o null. Los números no finitos (NaN e Infinity) se rechazan porque no tienen forma portátil estándar en cadenas de consulta. Ejemplo: name Ada Lovelace, city London, active true y score cuarenta y dos producen una cadena de cuatro parámetros con espacios y caracteres reservados codificados en percent. Envíe por POST un cuerpo JSON con el campo obligatorio object (alias json, data, params, map, fields). También puede pasar object como texto JSON que se parsea a ese mapa. Los arrays en el nivel superior, null, escalares y cualquier valor objeto o array anidado fallan con invalid_input y un mensaje en inglés claro que nombra la clave errónea cuando aplica. En caso de éxito la respuesta incluye query (la cadena codificada sin interrogación inicial), query_with_prefix (la misma con interrogación inicial, o solo la interrogación si no hay claves), count (el número de parámetros), pairs (un array ordenado de cadenas key y value tras la coerción escalar y antes de codificar) y object (un mapa de cadenas last-wins de esos valores coercidos). Fallo clásico: enviar filtros anidados bajo una clave como filter igual a un objeto y recibir invalid_input en lugar de una URL rota en silencio. El precio de API en éxito es la base publicada de $0.002 por ítem; los fallos de validación no se facturan.
Dónde aporta valor la conversión JSON a consulta
Los autores de cursos de fundamentos web quieren una landing dedicada a la serialización objeto-a-consulta en lugar de enterrar el tema bajo un parser bidireccional, porque la intención de búsqueda difiere: quien tiene un mapa JSON quiere codificar, no opciones de modo parse. Como la implementación es parse puro de nivel A, cada llamada exitosa cuesta el precio base publicado $0.002 sin tokens de modelo ni red de salida.
Casos de integración
Preparar parámetros de consulta HTTP de salida
Serialice mapas de configuración y de petición en un fragmento de consulta seguro para clientes, webhooks y constructores de URL firmadas.
Fixtures dorados para pruebas de codificación
Genere cadenas de consulta estables desde fixtures JSON en CI para que espacios, ampersands y Unicode se codifiquen igual en cada ejecución.
Preguntas técnicas
¿Cómo convierto un objeto JSON en una cadena de consulta URL?
Envíe un objeto plano en el campo object (o alias json, data, params). El campo query de la respuesta son los pares key=value codificados en percent unidos por &; query_with_prefix añade un ? inicial.
¿Y si mi objeto está anidado?
La capacidad exige un objeto plano. La estructura anidada falla con invalid_input para que pueda aplanar o rediseñar el mapa antes de codificar en lugar de enviar una URL ambigua.
¿Cuánto cuesta convertir un objeto JSON a cadena de consulta?
La herramienta del navegador es gratuita. Las peticiones API usan saldo KIT prepago a $0.002 por llamada exitosa; la entrada inválida no se cobra.