- 使用
Bun.JSON5.parse和Bun.JSON5.stringify解析和序列化 JSON5 - 在运行时
import和requireJSON5 文件作为模块(包括热重载和监视模式支持) - 在前端应用中使用 Bun 的打包器
import和requireJSON5 文件
一致性
Bun 的 JSON5 解析器使用 Rust 编写,并通过了 100% 的官方 JSON5 测试套件。翻译后的测试套件列出了每个测试用例。运行时 API
Bun.JSON5.parse()
将 JSON5 字符串解析为 JavaScript 值。
支持的 JSON5 特性
JSON5 是基于 ECMAScript 5.1 语法的 JSON 超集。它支持:- 注释:单行(
//)和多行(/* */) - 尾逗号:在对象和数组中
- 未引用的键:任何有效的 ECMAScript 5.1 标识符
- 单引号字符串:除了双引号字符串外
- 多行字符串:使用反斜杠续行
- 十六进制数字:
0xFF - 前导和尾随小数点:
.5和5. - Infinity 和 NaN:正数和负数
- 显式加号:
+42
错误处理
Bun.JSON5.parse() 在输入无效 JSON5 时抛出 SyntaxError:
Bun.JSON5.stringify()
将 JavaScript 值序列化为 JSON5 字符串。
美化打印
传递space 参数以格式化输出并添加缩进:
space 参数可以是数字(空格数)或字符串(用作缩进字符):
特殊值
与JSON.stringify 不同,JSON5.stringify 保留特殊的数值:
模块导入
ES 模块
您可以直接作为 ES 模块导入 JSON5 文件:config.json5
默认导入
app.ts
命名导入
您可以将顶层属性解构为命名导入:app.ts
CommonJS
您也可以在 CommonJS 中require JSON5 文件:
app.ts
JSON5 热重载
当您使用bun --hot 运行应用程序时,Bun 会在 JSON5 文件更改时重新加载它们:
config.json5
server.ts
terminal
打包器集成
当您使用 Bun 打包时,导入的 JSON5 文件会在构建时解析并作为 JavaScript 模块包含:terminal
- 生产环境中零运行时 JSON5 解析开销
- 更小的打包体积
- 未使用属性的摇树优化(命名导入)