为什么 JSON 里更容易炸
JSON 字符串必须用双引号闭合;内部的 `"` 必须写成 `\"`,否则解析失败。
HTML 里的 `&`、`<` 等与 JSON 无关——但如果你把整个 HTML 当成 JSON 字符串,弯引号与未转义换行也会出问题。
实体编码的职责边界
`&`、`<` 解决的是「放进 HTML 文档」时的文本安全显示;放进 JSON 字段仍是普通字符,需要的是 JSON 字符串转义而非浏览器实体。
接口既返回 JSON 又在字段里夹 HTML 时,先在 JSON 层合法,再在渲染层决定是否还需要实体编码以防 XSS。
实用流程
先把片段当作纯文本做 JSON.stringify,再在数据库/配置里存储;手工拼接最容易漏转义。
排查时用格式化 JSON + 实体编解码工具对照原文与渲染结果,确认是哪一层在改字符。