教程

HTML 实体与 JSON:模板字符串里的转义灾难怎么避免

在 JSON 里塞片段 HTML、邮件模板或富文本占位符时,`"`、`&`、换行如何正确转义。

为什么 JSON 里更容易炸

JSON 字符串必须用双引号闭合;内部的 `"` 必须写成 `\"`,否则解析失败。

HTML 里的 `&`、`<` 等与 JSON 无关——但如果你把整个 HTML 当成 JSON 字符串,弯引号与未转义换行也会出问题。

实体编码的职责边界

`&`、`<` 解决的是「放进 HTML 文档」时的文本安全显示;放进 JSON 字段仍是普通字符,需要的是 JSON 字符串转义而非浏览器实体。

接口既返回 JSON 又在字段里夹 HTML 时,先在 JSON 层合法,再在渲染层决定是否还需要实体编码以防 XSS。

实用流程

先把片段当作纯文本做 JSON.stringify,再在数据库/配置里存储;手工拼接最容易漏转义。

排查时用格式化 JSON + 实体编解码工具对照原文与渲染结果,确认是哪一层在改字符。