JSON, HTML, URL y Base64 resuelven problemas distintos. Una cadena válida en una gramática puede seguir rota o insegura en otra aunque el resultado visible tenga muchos escapes.
Usa el analizador de destino
Usa escape JSON solo cuando el texto será un valor de cadena JSON. Usa referencias HTML para texto representado en sintaxis HTML, codificación porcentual para componentes URL y Base64 cuando los bytes necesiten un alfabeto textual. No son intercambiables: una barra inversa JSON no protege ante un analizador HTML y un signo de porcentaje no sustituye las reglas de comillas JSON.
Codificar no concede confianza
Escapar conserva datos al cruzar una frontera sintáctica; no decide si el texto decodificado puede ejecutarse, representarse o usarse en una consulta. Separa datos de comandos y plantillas, usa APIs parametrizadas para SQL, enlaces de texto nativos para HTML y el modelo de seguridad de destino. EscapeJSON devuelve texto, nunca lo inserta como marcado y no afirma que transformar una cadena valide el payload que la rodea.
Verifica destino y número de capas
Compara el resultado con los contratos productor y destino. El escape protege una sola gramática JSON; no sanea HTML, SQL, JavaScript, shell u otro analizador. Decodifica una capa revisada cada vez, rechaza Unicode mal formado y conserva un ejemplo conocido para integraciones importantes.