JSON escape y unescape: maneja datos anidados correctamente

2024-04-15

Colas, logs y columnas de base de datos suelen guardar JSON como string dentro de JSON. Entender escapes es clave para desempaquetar estos payloads.

Caracteres que debes escapar

En strings: ", \, y caracteres de control como \n y \t.

{
  "quote": "He said \"Hello\"",
  "path": "C:\\temp\\data"
}

JSON anidado como string

Primero parsea el exterior y luego aplica JSON.parse al campo string interno.

{ "payload": "{\"id\":1,\"name\":\"Alice\"}" }

Doble escape en logs

No cuentes barras invertidas a mano: parsea repetidamente hasta llegar a un objeto o a la cadena esperada.

Desescape seguro

Usa JSON.parse, no reemplazos con regex. Tras parsear datos no confiables, valida la estructura (por ejemplo claves __proto__).

Otros contextos (SQL, shell)

Escapar JSON no es lo mismo que quoted strings en SQL o shell. Crea objetos, aplica JSON.stringify y luego el escape especifico del contexto destino.

Flujo recomendado

Pegar -> parsear -> formatear -> parseo interno en campos que sigan como string -> validacion de negocio.