对比
JSON5 与 JSON
JSON5 保留 JSON 数据模型,同时增加便于手写维护的语法,如注释、标识符键、单引号字符串、尾随逗号和十六进制数。标准 JSON 语法更严格,广泛用于 API 和通用解析器。
应该选择哪种格式?
人工维护的配置只有在所有消费者都支持 JSON5 时才考虑使用。API、标准解析器和广泛互操作场景选择 JSON。
适用于 JSON5
手动编辑的配置文件 · 包含注释的结构化数据
- 解析器支持 JSON5 时阅读和维护数据
- 已确认支持 JSON5 的应用设置
适用于 JSON
Web API、配置文件和数据交换
- 传递结构化数据
基本信息
| 项目 | JSON5 | JSON |
|---|---|---|
| 扩展名 | .json5 | .json |
| MIME 类型 | application/json | application/json |
| 常见用途 | 手动编辑的配置文件 · 包含注释的结构化数据 | Web API、配置文件和数据交换 |
| 打开方式 | 需要支持 JSON5 的解析器或工具 | 可使用文本编辑器、IDE或支持JSON的查看器打开。 |
| 导出或转换 | 使用明确支持 JSON5 的编辑器或解析器打开。标准 JSON 解析器可能因注释、末尾逗号等语法而报错。 | 可使用应用程序或转换工具将其转换为CSV等格式。 |
按用途选择
解析器支持 JSON5 时阅读和维护数据
手动编辑的配置文件 · 包含注释的结构化数据
JSON5已确认支持 JSON5 的应用设置
手动编辑的配置文件 · 包含注释的结构化数据
JSON5传递结构化数据
Web API、配置文件和数据交换
JSON关键点 1
JSON5 支持注释、单引号、不加引号的标识符键、尾随逗号、十六进制值以及 Infinity/NaN 语法。这些不属于 RFC 8259 JSON 文法,标准 JSON 解析器可能拒绝它们。
进一步了解差异关键点 2
JSON5 是语法超集,基本数据模型仍是对象、数组、字符串、数字、布尔值和 null,但需要支持 JSON5 的解析器。不要仅凭文件扩展名或媒体类型推断兼容性。
进一步了解差异进一步了解差异
当注释和宽松语法有助于维护手写配置,且所有工具明确支持 JSON5 时使用 JSON5。通信和通用交换使用 JSON。转换时应决定如何表示 JSON 不支持的数字,并验证输出是严格 JSON。
- 标准 JSON 解析器可能拒绝语法有效的 JSON5。请核实具体解析器、编辑器、构建工具或 API 消费方。
- 转换为 JSON 会丢失注释和格式意图。Infinity 与 NaN 没有直接的 JSON 数值表示,替代方式应由应用定义。
- 转换后检查重复键、数值范围与精度、字符编码、解析器限制以及最终 JSON 合规性。
常见问题
可以把 JSON5 文件发送给任意 JSON API 吗?
不安全。JSON5 允许标准 JSON 之外的语法。应先用 JSON5 解析器读取,再序列化为严格 JSON,前提是 API 要求 RFC 8259 JSON。