JSON5支持注释
JSON5 是 JSON(JavaScript Object Notation)的扩展版本,旨在通过引入 ECMAScript 5.1 的部分特性,使 JSON 更易于人工编写和阅读。它在保持与标准 JSON 兼容的同时,提供了更宽松的语法规则。
JSON5 的主要特性
-
允许末尾逗号
{ "name": "JSON5", "version": "1.0", // 末尾可以加逗号 } -
键名可省略引号(如果是合法标识符)
{ key: "value", // 不加引号 "another-key": 123 // 加引号也可以 } -
支持单引号字符串
{ 'message': 'Hello, 世界!' } -
多行字符串(用
\换行){ "text": "这是第一行\ 这是第二行" } -
支持注释
- 单行注释:
// - 多行注释:
/* */
{ // 这是注释 "value": 42, /* 这是 多行注释 */ } - 单行注释:
-
扩展的数字格式
- 十六进制(
0xFF) - 特殊值(
Infinity、NaN) - 省略前导/后导零(
.5、5.)
{ hex: 0x1A, infinity: Infinity, notANumber: NaN, decimal: .5, integer: 5. } - 十六进制(
JSON5 vs JSON 对比
| 特性 | JSON5 | JSON |
|---|---|---|
| 注释 | ✅ 支持 | ❌ 不支持 |
| 无引号键名 | ✅ 支持 | ❌ 必须加引号 |
| 单引号字符串 | ✅ 支持 | ❌ 必须双引号 |
| 末尾逗号 | ✅ 支持 | ❌ 不允许 |
| 多行字符串 | ✅ 支持 | ❌ 不允许 |
| 宽松数字格式 | ✅ 支持 | ❌ 严格格式 |
JSON5 解析示例(JavaScript)
使用 json5 库:
const JSON5 = require('json5');
const obj = JSON5.parse('{key: "值", num: .5}');
console.log(obj); // { key: '值', num: 0.5 }
何时使用 JSON5?
- 配置文件:需要注释和更灵活的语法时(如
.eslintrc.json5)。 - 开发调试:临时存储带注释的复杂数据。
- 替代 JSON:当需要兼容 JSON 但希望更易读写时。
⚠️ 注意:JSON5 不是 JSON 的官方标准,部分工具可能不支持。正式接口传输仍需用标准 JSON。
如果需要将 JSON 转 JSON5 或反之,可以告诉我具体需求! 😊
浙公网安备 33010602011771号