JSON5人类友好的JSON
JSON5 可以理解为 “人类友好的 JSON”,它是对传统 JSON(JavaScript Object Notation) 的一个扩展,让配置文件更容易写、读和维护。
一、Raw JSON5 是什么意思
Raw JSON5 通常指:
未经解析、未经处理的 JSON5 原始文本
也就是:
- 还没被解析成对象
- 只是字符串形式
- 包含 JSON5 语法
例如:
1 | { |
这就是 Raw JSON5 文本。
解析之后会变成:
1 | { |
二、JSON5 vs JSON 关键区别
普通 JSON 像一个非常严格的军官:
{
"name": "GaGa",
"age": 30
}
JSON5 则像一个程序员写的配置文件:
{
// comment
name: 'GaGa',
age: 30,
}
JSON5允许:
| 特性 | JSON | JSON5 |
|---|---|---|
| 注释 | ❌ | ✅ |
| 单引号 | ❌ | ✅ |
| key 不加引号 | ❌ | ✅ |
| 末尾逗号 | ❌ | ✅ |
| NaN / Infinity | ❌ | ✅ |
| 多行字符串 | ❌ | ✅ |
例子:
1 | { |
三、JSON5解析流程(底层逻辑)
JSON5 最终也必须转换为标准 JSON 或对象。
解析流程:
flowchart LR A[Raw JSON5 text] --> B[JSON5 Parser] B --> C[AST] C --> D[Standard JSON] D --> E[Program Object]
过程解释:
- 读取 Raw JSON5
- JSON5 Parser 解析
- 生成 AST
- 转换为标准 JSON
- 变成程序对象
四、哪些系统在使用 JSON5
JSON5 在现代开发生态中非常常见,例如:
- Node.js 配置
- 前端构建工具
- AI Agent 配置
- DevOps 工具
常见项目:
| 项目 | 用途 |
|---|---|
| webpack | 构建工具配置 |
| babel | JS 编译器配置 |
| next.js | 前端框架配置 |
| clawhub/openclaw | AI agent config |