JSON 工具箱

常见问题

把站内工具与 JSON 规范里被问得最多的问题按场景归拢,每个问题给出能直接照做的答案,而不是泛泛而谈的结论。

25 篇文章

本分类文章

JSON 能写注释吗

RFC 8259 没有注释语法,`//` 与 `/* */` 都会让 JSON.parse 直接抛错。要写说明只有四条路:换 JSON5/JSONC、把备注塞进数据字段、写进 Schema 的 description,或改用 YAML。

入门约 3 分钟更新于 2026-10-30

JSON 尾逗号为什么会报错

尾逗号在 JavaScript 里合法,在 JSON 里是语法错误。本文给出报错原文、RFC 依据、三种改法,以及为什么不要靠「删逗号」蒙混过接口。

入门约 3 分钟更新于 2026-10-30

BOM 会导致 JSON 解析失败吗

UTF-8 BOM 是不可见的三个字节 EF BB BF,JSON.parse 见到就直接抛错,而且错误位置通常报在第 1 行第 1 列,看着像文件是空的。本文讲清成因、判断方法和批量清除的手段。

入门约 4 分钟更新于 2026-10-30

NaN 和 Infinity 能放进 JSON 吗

JSON 只有十进制数字字面量,没有 NaN、Infinity、-Infinity。JSON.stringify 会静默把它们变成 null,接口里因此出现过大量「明明是数字却收到 null」的故障。

入门约 3 分钟更新于 2026-10-30

大整数为什么变成 9007199254740992

超过 2^53-1 的整数在 IEEE 754 双精度里无法精确表示,JSON.parse 会静默把末位改掉。订单号、雪花 ID、金额分单位都踩过这个坑,正确解法是全程当字符串传。

进阶约 4 分钟更新于 2026-11-04

中文为什么变成 \u4e2d\u6587

\u4e2d\u6587 是合法的 Unicode 转义,不是编码错误。真正的乱码是「测试」这种。分清两者,才知道该改序列化配置还是改文件编码。

入门约 3 分钟更新于 2026-10-30

JSON、JSON5、JSONC 有什么区别

三者是严格包含关系:JSON 是标准,JSONC 只多注释,JSON5 还多单引号、无引号键、尾逗号、十六进制与多行字符串。选错格式的代价通常在「接口不认」而不是「读不出来」。

入门约 4 分钟更新于 2026-10-30

JSON 和 YAML 该怎么选

JSON 用括号划边界、YAML 用缩进表达层级。机器交互选 JSON,人写配置选 YAML;两者可以互转,但注释、锚点、多文档这些特性在转换中会丢。

入门约 4 分钟更新于 2026-10-30

JSONPath 和 JSON Pointer 该怎么选

JSON Pointer 是「唯一路径」,写法固定、能直接当 key 用;JSONPath 是「查询语言」,支持通配、递归、过滤。选错的典型症状是拿 JSONPath 去做配置读写,或者拿 Pointer 去做批量筛选。

进阶约 4 分钟更新于 2026-10-30

JSON Schema 到底能解决什么问题

Schema 管的是结构和类型,管不了业务语义。它能把「字段缺失、类型错、枚举越界」挡在入口,但「金额为负、结束时间早于开始时间」这类规则,得靠代码校验。

进阶约 4 分钟更新于 2026-10-30

draft-07 和 2020-12 该用哪个

2020-12 是当前推荐版本,`$defs`、`prefixItems`、`unevaluatedProperties` 都在这里;但很多老校验器、代码生成器仍只认 draft-07。选版本的依据不是新旧,而是「链路上每个工具都支持哪个」。

深入约 4 分钟更新于 2026-10-30

Schema 怎么生成 TypeScript 类型

用 json-schema-to-typescript 或 quicktype 一条命令就能产出 .d.ts,但生成结果只是起点:可选字段、联合类型、`additionalProperties` 的映射都需要人工确认,否则类型看着对、用起来处处报错。

进阶约 4 分钟更新于 2026-10-30

大 JSON 解析很慢怎么优化

优化顺序错了,换什么库都没用。先量出时间花在解析、渲染还是请求上,再按「减少解析次数 → 流式处理 → 挪到 Worker → 换二进制格式」逐级加码。

进阶约 5 分钟更新于 2026-10-30

__proto__ 注入是怎么回事

攻击者把 `__proto__` 当普通键传进来,深拷贝或合并函数一递归,原型就被改了。之后全站对象都多出攻击者控制的属性,轻则逻辑错乱,重则绕过权限判断。

深入约 5 分钟更新于 2026-10-30

JSON 里的 XSS 是怎么发生的

JSON 本身不会执行,XSS 发生在「把 JSON 当 HTML 用」的那一步。服务端拼页面、前端用 innerHTML、把 JSON 直接塞进 `<script>` 标签,是三个最常见的入口。

进阶约 4 分钟更新于 2026-10-30

在线 JSON 格式化会上传数据吗

判断一个在线 JSON 工具是否会传数据,不用看隐私政策,看网络面板就够了:格式化时有没有 XHR 请求、页面能不能断网使用、数据在刷新后是否还在。

入门约 3 分钟更新于 2026-10-30

在线工具支持多大的 JSON 文件

没有统一上限,真正卡住你的是浏览器标签页的内存预算:一份 20MB 的 JSON 解析后通常膨胀到 60–100MB,再叠加渲染节点,几百 MB 就崩了。

入门约 3 分钟更新于 2026-10-30

接口返回的 JSON 该用什么结构

三种常见结构各有代价:裸返回最简洁但扩展时要破坏兼容;固定信封安全但冗余;JSON:API 规范完整但重。中小型项目最实用的是「HTTP 状态码表结果 + 固定信封包业务数据」。

进阶约 4 分钟更新于 2026-10-30

JSON 里的时间字段该用什么格式

时间戳和字符串各有取舍,但混用一定出事。推荐统一用 ISO 8601 带时区偏移(或 UTC 的 Z 结尾),存储用 UTC,展示在前端按用户时区转换。

入门约 3 分钟更新于 2026-10-30

空值用 null 还是省略字段

`null` 表示「这个字段存在,但没有值」,省略表示「这个字段不存在」。PATCH 接口、配置合并、前端表单回填三处最容易因此出错,判断标准是「消费方需不需要知道这个字段被显式清空」。

进阶约 3 分钟更新于 2026-10-30