曾經是不是有人告訴過你:“JSON 不能有注釋?”
發現了一個有意思的網站,域名為 https://douglascrockfordisnotyourdad.technomancy.us/
這個子域名所表達的意思是 “Douglas Crockford 不是你爸爸
”,大概率是因為這個人曾說過 “JSON 不能有注釋”,這個網站主要內容是在告訴你:“在 JSON 中使用注釋沒有什么問題,不要聽從 Douglas Crockford 的建議
”
下文為大家分享一個在 JavaScript 中支持 JSON 注釋的 NPM 庫。
什么是 JSON5?
JSON5 是一種對流行的 JSON 文件格式的擴展,旨在讓手工編寫和維護(例如配置文件)變得更加簡單直觀。然而,它并非為機器與機器之間的通信設計(建議繼續使用 JSON 或其他文件格式用于此類場景)。
JSON5 格式是 JSON 的超集(因此所有有效的 JSON 文件在 JSON5 中也有效)
,其語法擴展自 ECMAScript 5.1(ES5)。同時,JSON5 也是 ES5 的嚴格子集,保證了向后兼容性和一致性
。
JSON5 項目始于 2012 年。截至 2024 年,JSON5 每周下載量超過 8500 萬次,是 npm 上最受依賴的 0.1% 軟件包之一,并被廣泛應用于主流項目如 Chromium、Next.js、Babel、Retool、WebStorm 等。此外,JSON5 還原生支持 MacOS 和 iOS 等蘋果平臺。
JSON5 的主要功能
以下是 JSON5 支持但 JSON 不支持的一些特性:
對象
- 對象的鍵可以是 ECMAScript 5.1 的 IdentifierName。
數組
字符串
數字
- 支持 IEEE 754 的正無窮大、負無窮大和 NaN。
注釋
空白字符
示例代碼
以下是一個 JSON5 格式的“多功能”示例:
{
// 注釋內容
unquoted: '你可以引用我的話',
singleQuotes: '這里可以使用 "雙引號"',
lineBreaks: "看吶,媽媽! \
沒有 \\n 的換行!",
hexadecimal: 0xdecaf,
leadingDecimalPoint: .8675309, andTrailing: 8675309.,
positiveSign: +1,
trailingComma: '在對象中',
andIn: ['數組中',],
"backwardsCompatible": "兼容 JSON",
}
安裝使用
依賴安裝
npm install json5
CommonJS、ES Modules 規范都支持
const JSON5 = require('json5');
import JSON5 from 'json5';
JSON5.stringify()
,將 JavaScript 對象轉換為 JSON5 字符串。
JSON5.stringify(value[, replacer[, space]]);
JSON5.stringify(value[, options]);
JSON5.parse()
,將 JSON5 字符串解析為 JavaScript 對象。
JSON5.parse(text[, reviver]);
該文章在 2024/12/20 10:45:14 編輯過