曾经是不是有人告诉过你:“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 编辑过