- 使用
Bun.JSON5.parse和Bun.JSON5.stringify解析和序列化 JSON5 - 在运行时以模块形式
import和requireJSON5 文件(支持热重载和监视模式) - 通过 Bun 的打包工具在前端应用中
import和requireJSON5 文件
兼容性
Bun 的 JSON5 解析器通过了官方 JSON5 测试套件 100% 的测试。解析器使用 Zig 编写以实现最佳性能。你可以查看我们的 翻译测试套件 查看每个测试用例。运行时 API
Bun.JSON5.parse()
将 JSON5 字符串解析为 JavaScript 值。
支持的 JSON5 特性
JSON5 是基于 ECMAScript 5.1 语法的 JSON 超集。它支持:- 注释:单行注释 (
//) 和多行注释 (/* */) - 尾随逗号:对象和数组中允许
- 未加引号的键:有效的 ECMAScript 5.1 标识符可以用作键
- 单引号字符串:除了双引号字符串外支持单引号
- 多行字符串:使用反斜杠换行
- 十六进制数:
0xFF - 数字前后的小数点:
.5和5. - 无限大和 NaN:正负无穷和非数字值
- 显式加号:
+42
错误处理
如果输入不是有效的 JSON5,Bun.JSON5.parse() 会抛出 SyntaxError:
Bun.JSON5.stringify()
将 JavaScript 值序列化为 JSON5 字符串。
美化输出
传入space 参数来格式化输出并缩进:
space 参数可为数字(空格数)或字符串(用作缩进字符):
特殊值
与JSON.stringify 不同,JSON5.stringify 会保留特殊数值:
模块导入
ES 模块
可以直接将 JSON5 文件作为 ES 模块导入:config.json5
默认导入
命名导入
可以将顶层属性作为命名导入进行解构:CommonJS
JSON5 文件同样可以在 CommonJS 中通过 require 引入:JSON5 热重载
当使用bun --hot 运行你的应用时,JSON5 文件的变动会自动被检测并重载:
config.json5
terminal
打包工具集成
当你导入 JSON5 文件并使用 Bun 打包时,JSON5 会在构建时被解析,并作为 JavaScript 模块包含:terminal
- 生产环境零运行时 JSON5 解析开销
- 更小的包体积
- 对未使用属性支持摇树优化(命名导入)