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 或反之,可以告诉我具体需求! 😊