Something beautiful is on the way.

JSON5支持注释

JSON5 是 JSON(JavaScript Object Notation)的扩展版本,旨在通过引入 ECMAScript 5.1 的部分特性,使 JSON 更易于人工编写和阅读。它在保持与标准 JSON 兼容的同时,提供了更宽松的语法规则。


JSON5 的主要特性

  1. 允许末尾逗号

    {
      "name": "JSON5",
      "version": "1.0",  // 末尾可以加逗号
    }
    
  2. 键名可省略引号(如果是合法标识符)

    {
      key: "value",       // 不加引号
      "another-key": 123  // 加引号也可以
    }
    
  3. 支持单引号字符串

    {
      'message': 'Hello, 世界!'
    }
    
  4. 多行字符串(用 \ 换行)

    {
      "text": "这是第一行\
      这是第二行"
    }
    
  5. 支持注释

    • 单行注释://
    • 多行注释:/* */
    {
      // 这是注释
      "value": 42,
      /* 这是
         多行注释 */
    }
    
  6. 扩展的数字格式

    • 十六进制(0xFF
    • 特殊值(InfinityNaN
    • 省略前导/后导零(.55.
    {
      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 或反之,可以告诉我具体需求! 😊

posted @ 2025-07-17 11:24  张朋举  阅读(330)  评论(0)    收藏  举报