JSON escape e unescape: trate dados aninhados corretamente
2024-04-15
Filas, logs e colunas de banco frequentemente guardam JSON como string dentro de JSON. Entender escapes e essencial para desembrulhar esses payloads.
Caracteres que precisam de escape
Em strings: ", \, e caracteres de controle como \n e \t.
{
"quote": "He said \"Hello\"",
"path": "C:\\temp\\data"
}JSON aninhado como string
Primeiro faça parse do nivel externo e depois JSON.parse no campo string interno.
{ "payload": "{\"id\":1,\"name\":\"Alice\"}" }Escape duplo em logs
Nao conte barras invertidas na mao: faça parse repetidas vezes ate chegar ao objeto ou string esperada.
Unescape seguro
Use JSON.parse, nao substituicoes com regex. Depois de parsear dados nao confiaveis, valide a estrutura (ex.: chaves __proto__).
Outros contextos (SQL, shell)
Escape de JSON nao e o mesmo que quoting de SQL ou shell. Monte objetos, aplique JSON.stringify e depois o escape especifico do contexto alvo.
Fluxo recomendado
Colar -> parsear -> formatar -> parse interno nos campos que ainda sao string -> validacao de negocio.