Serializar JSON
Esta herramienta convierte un documento JSON en un literal de cadena JSON — la forma escapada y entrecomillada que necesitas para incrustar un payload dentro de otro. Escapa comillas, barras invertidas y caracteres de control en una sola pasada, así que no puede ocurrir el doble escape que produce un buscar y reemplazar encadenado.
¿Cómo funciona Serializar JSON?
Esta es la operación que hay detrás de una tarea recurrente y nada glamurosa: meter un payload dentro de otro. Un cuerpo de petición dentro de una definición de webhook. Un fixture dentro de un archivo de pruebas. Un documento de configuración dentro del valor de un ConfigMap de Kubernetes. Una respuesta de ejemplo dentro de un campo example de OpenAPI. En cada caso, el documento interior tiene que convertirse en una cadena dentro del exterior, lo que significa que cada comilla, barra invertida y salto de línea que contenga necesita escaparse.
La gente lo hace a mano con buscar y reemplazar, y falla de una manera concreta y predecible. Si reemplazas primero las comillas y después las barras invertidas, la barra invertida que acabas de poner delante de cada comilla se escapa una segunda vez: querías \" y tienes \\", lo que se interpreta como una barra invertida literal seguida del final de la cadena. El documento parece funcionar hasta que algo dentro de él contiene una comilla.
Escapar en un único barrido de caracteres hace eso imposible. Cada carácter se examina una vez y se mapea una vez — " a \", \ a \\, salto de línea a \n, tabulación a \t — sin que una pasada posterior pueda volver a procesar la salida de la pasada anterior.
RFC 8259 exige que todo carácter de control por debajo de U+0020 vaya escapado, así que lo que no tenga forma abreviada se convierte en una secuencia \u. Los caracteres no ASCII se dejan tal cual por defecto, porque el JSON moderno es UTF-8 y escaparlos solo hace el resultado más grande y menos legible. Cuando un destino necesita de verdad ASCII puro — un pipeline de logs antiguo, un sistema que corrompe los bytes altos — la opción los escapa, y emite correctamente un par sustituto para todo lo que queda fuera del Plano Multilingüe Básico, ya que un solo \u no puede representar un emoji y emitir uno solo lo trunca.
Por defecto, la entrada se valida primero como JSON. Escapar algo roto produce un literal de cadena que en sí es válido pero cuyo contenido fallará al interpretarse más tarde, en un lugar mucho menos conveniente. Desactiva esa opción para escapar texto arbitrario, algo útil para líneas de log y fragmentos de shell.
Documento
{"name":"Ada","note":"line one
line two"}Literal de cadena
"{\"name\":\"Ada\",\"note\":\"line one\nline two\"}"¿Qué opciones y casos límite admite Serializar JSON?
| Parámetro | Tipo | Valor predeterminado | Comportamiento y casos límite |
|---|---|---|---|
| Envolver en comillas | booleano | true | Incluye las comillas dobles para que el resultado sea una cadena JSON completa. Desactívalo cuando pegas en un par de comillas existente. |
| Escapar no ASCII | booleano | false | Convierte cada código por encima de U+007F en \uXXXX. Es innecesario para destinos UTF-8 y aumenta el tamaño del resultado. Los caracteres astrales se emiten correctamente como un par de sustitutos en lugar de un escape truncado. |
| Escapar barras | booleano | false | Escribe / como \/. Es JSON válido, requerido por algunos servicios de logs y por JSON incrustado en bloques HTML <script> donde </script> terminaría prematuramente el elemento. |
| Requerir JSON válido | booleano | true | Valida antes de escapar, para que el literal se pueda analizar y obtener el documento original. Si está desactivado, escapa texto arbitrario — útil para líneas de log y fragmentos de shell. |
| Caracteres de control | siempre escapados | — | RFC 8259 prohíbe caracteres por debajo de U+0020 en una cadena. \n \r \t \b \f usan sus abreviaturas; el resto se convierte en \u00XX. |
| Crecimiento de tamaño | ≈ 5–30% | — | Depende completamente de cuántas comillas y barras invertidas contiene la entrada. Un documento JSON, que tiene muchas comillas, crece más que un texto normal. |
Preguntas frecuentes
¿En qué se diferencia esta herramienta de JSON.stringify en JavaScript?
JSON.stringify toma un valor de JavaScript y produce texto JSON. Esta herramienta toma texto JSON y produce un literal de cadena JSON que lo contiene — que es justo lo que hace JSON.stringify(someJsonText) cuando le pasas una cadena. La distinción importa: si aplicas stringify a un objeto obtienes {"a":1}, mientras que si la aplicas al texto {"a":1} obtienes "{\"a\":1}". Esta herramienta hace lo segundo.
¿Por qué se rompió el JSON que escapé a mano?
Casi siempre es un error de orden. Reemplazar las comillas antes que las barras invertidas escapa dos veces la barra invertida que cada reemplazo acaba de introducir, así que \" se convierte en \\" y la cadena termina antes de tiempo. Funciona hasta que el documento contiene una comilla — lo cual, en JSON, ocurre de inmediato. Recorrer cada carácter exactamente una vez, como hace esta herramienta, elimina esa posibilidad.
¿Cómo se invierte el proceso?
Usa «Desescapar JSON», que toma el literal y devuelve el documento. Es deliberadamente tolerante: acepta un fragmento que ha perdido las comillas que lo rodeaban, que es el estado habitual de cualquier cosa copiada de una línea de log o de un stack trace.
¿Debería escapar las barras inclinadas?
Normalmente no. JSON permite \/ pero ningún parser la exige. Los dos casos en los que importa: JSON incrustado directamente en un bloque <script> de HTML, donde un </script> literal dentro de una cadena cerraría el elemento antes de tiempo, y unas cuantas herramientas de envío de logs que esperan la forma escapada.
¿Se envía mi payload a algún sitio?
No. El escape ocurre en esta pestaña del navegador. Los documentos que la gente incrusta en otros documentos suelen ser fixtures, cuerpos de API y configuración — justo el material que no debería viajar por un servidor desconocido para que le cambien las comillas.
¿Por qué se rompe mi cadena escapada cuando la pego en un comando de shell?
Porque entran en juego dos capas de entrecomillado y solo una de ellas es la de JSON. Esta herramienta produce un literal de cadena JSON válido; después, el shell aplica sus propias reglas a lo que pegues, y una comilla doble que JSON escribió como \" sigue siendo una comilla doble para bash. Envuelve el valor completo en comillas simples, o escríbelo en un archivo y pasa la ruta del archivo.
¿Qué herramientas relacionadas debería usar después?
- Convertir JSON a CSVConvierte registros a una hoja de cálculo, anidados incluidos
- Convertir CSV a JSONConvierte una exportación de hoja de cálculo en registros
- Desescapar JSONRecupera un documento oculto entre escapes en un log
- Convertir JSON a TypeScriptGenera interfaces a partir de un ejemplo, con campos opcionales