JSON不特殊处理空格,字符串内空格为U+0020,解析后可直接使用;HTML空格实体如 不属于JSON规范,混入属数据污染,应源头剥离或用CSS/语义方案解决。

JSON 本身不特殊处理空格——空格就是普通字符,直接存、原样取,不需要转义或编码。所谓“HTML5空格”(如 、 )是 HTML 渲染层的概念,进不到 JSON 里;JSON 只管字符串内容,不管它将来怎么被 HTML 解释。
JSON 字符串里的空格就是 ASCII 32
你在 JSON 中写一个带空格的字符串,比如:
{"name": "Alice Smith", "desc": " hello world "}里面的空格就是原始的 U+0020 空格字符,解析后 JS/Python 拿到的就是标准空格,可直接用于 trim()、split(' ') 等操作。
注意点:
- JSON 文件或网络传输中,空格和换行只是可读性辅助,
JSON.parse()会忽略它们(但字符串值内部的空格不会被忽略) - 不要手动把空格替换成
\u00a0或存进 JSON——前者是 Unicode 不间断空格(U+00A0),后者是 HTML 实体,不是 JSON 合法字符 - 如果后端返回的 JSON 字段里出现了
字面量(即四个字符),说明数据源已混入 HTML 转义逻辑,这不是 JSON 的责任,而是上游生成时就错了
需要保留“HTML 空格效果”?别存实体,存语义
如果你的真实需求是:前端渲染时让多个空格不被 HTML 合并(即实现 white-space: pre 效果),那解决方案不在 JSON 层,而在使用层:
立即学习“前端免费学习笔记(深入)”;
- JSON 中仍存普通空格,例如:
{"content": "a b c"} - 前端用
white-space: pre-wrap或white-space: pre-line渲染该字段 - 或用
textContent赋值(而非innerHTML),避免浏览器自动折叠空白 - 绝对不要在 JSON 里塞
然后用innerHTML渲染——这既破坏数据纯度,又引入 XSS 风险(除非你严格过滤)
遇到 JSON 解析后空格“消失”?先查三件事
常见现象:JSON 里明明写了多个空格,JS 解析后 str.length 却变短了,或 console.log 看起来像被压缩了。
- 检查是否误用了
innerHTML渲染——浏览器会合并连续空白,跟 JSON 无关 - 确认是否调用了
String.prototype.trim()、replaceAll(/\s+/g, ' ')等清理逻辑 - 用
JSON.stringify(str)打印原始字符串,看 Unicode 编码:"\u00a0"是不间断空格,"\u0020"才是普通空格;混用会导致表现不一致
真正容易被忽略的是:前后端对“空格语义”的约定。比如编辑器输入的 被富文本组件转成 HTML 字符串再塞进 JSON,这时空格已不是空格,而是 HTML 数据污染。处理这类场景,得在入库前剥离 HTML 标签和实体,或统一用 Markdown/自定义标记代替。JSON 的干净,靠的是源头控制,不是后期转义。











