NPM酷库044:json5,更可读的JSON

NPM酷库,天天两分钟,了解一个流行NPM库。·git

JSON是JS中数据交换时最经常使用的数据格式,其序列话和反序列化性能很是好,可是其语法却比较严格,好比如下是一个合法的JS声明,却不是一个合法的JSON:github

{ foo: 'bar' }

JSON格式强制要求对象key必须以双引号包含,字符串也必须使用双引号,等等。json

若是咱们只是调用 JSON.stringify()JSON.parse() 来进行数据的处理,那么也没什么关系,可是若是咱们须要手写JSON,好比写配置文件或数据模式定义,那么严格的JSON语法检查会给编码带来不少不便。数组

JSON5

JSON5 是一个JSON格式的扩展,目的是可以让人类更容易读写数据文件。JSON5只是一个第三方的库,并不是JSON格式的继任者。JSON5相对于JSON,有以下各个方面优点。性能

对象ui

  • 属性key能够不用引号包含
  • 属性key能够用单引号包含
  • 能够有尾部多余逗号

数组this

  • 能够有尾部多余逗号

字符串编码

  • 能够以单引号包含
  • 支持多行字符串

数字code

  • 能够以16进制表示
  • 能够以小数点开头或结尾
  • 支持 Infinity, -Infinity, NaN, 和 -NaN.
  • 能够显式声明正号 +

注释对象

  • 容许当行和多行注释

以下就是一个合法的JSON5格式文件:

{
    foo: 'bar',
    while: true,

    this: 'is a \
multi-line string',

    // this is an inline comment
    here: 'is another', // inline comment

    /* this is a block comment
       that continues on another line */

    hex: 0xDEADbeef,
    half: .5,
    delta: +10,
    to: Infinity,   // and beyond!

    finally: 'a trailing comma',
    oh: [
        "we shouldn't forget",
        'arrays can have',
        'trailing commas too',
    ],
}

处理JSON5数据:

const JSON5 = require('json5');

let obj = JSON5.parse('{unquoted:"key",trailing:"comma",}');
let str = JSON5.stringify(obj);

参考资料

https://github.com/json5/json5

http://json5.org

相关文章
相关标签/搜索