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

相關文章
相關標籤/搜索