JSON5 和 JSON 的区别:JSON 里能写注释吗?在线 JSON5 解析
先回答最常见的疑问:标准 JSON 里不能写注释,遇到 // 注释 会直接解析失败。但如果你需要注释、尾逗号、单引号等更宽松的写法,可以用 JSON5 —— JSON 的超集,几乎完全兼容。
JSON5 相对 JSON 新增的能力
| 特性 | JSON | JSON5 | 示例 |
|---|---|---|---|
| 注释 | ❌ | ✅ | // 说明、/* 块 */ |
| 单引号字符串 | ❌ | ✅ | 'name' |
| 末尾逗号 | ❌ | ✅ | {"a":1,} |
| 不带引号的键 | ❌ | ✅ | {name: "tom"} |
| 十六进制数字 | ❌ | ✅ | 0xFF |
| 多行字符串 | ❌ | ✅ | '第一行\n第二行' |
| ±Infinity / NaN | ❌ | ✅ | Infinity |
什么时候用 JSON5
- 配置文件:需要注释说明用途(很多现代工具链已默认支持)
- 手写数据:临时调试时不想纠结引号和尾逗号
- 迁移过渡:把 JS 对象字面量粘进配置,JSON5 能直接吃下
什么时候别用
- API 传输:接口契约请坚持标准 JSON,兼容性最好
- 存储与日志:数据文件用标准 JSON,工具链解析零成本
JSON5 示例
{
name: 'tom', // 单引号 + 无引号键
age: 0x1E, // 十六进制 = 30
hobbies: ['code', 'music',], // 尾逗号
}
💡 JSON 格式化工具 的「美化/压缩」默认支持 JSON5 宽松解析——直接把上面这种带注释和单引号的配置粘进去也能正常解析、美化。