JSON5 格式化与转换
解析 JSON5 格式(支持注释、尾随逗号、单引号等扩展语法),转换为标准 JSON 或格式化输出
JSON5 输入
标准 JSON 输出
关于 JSON5
- JSON5 是 JSON 的超集,在保持兼容性的同时增加了更多人性化语法,常用于配置文件(如
.eslintrc、tsconfig.json) - 支持单行注释(
//)、多行注释(/* */)、尾随逗号、单引号字符串、十六进制数字、多行字符串等扩展语法 - 适用于需要注释的配置文件场景,以及从 JSON5 格式迁移到标准 JSON 的数据处理
操作说明
- 在左侧粘贴 JSON5 内容,选择输出模式(转标准 JSON 或格式化 JSON5),点击「转换」或按 Ctrl+Enter
- 点击「JSON5 示例」快速加载含注释和尾随逗号的示例数据
- 右侧结果支持一键复制或下载为
.json/.json5文件 - 支持拖拽
.json5或.json文件到左侧输入区
注意事项
- JSON5 解析使用纯前端实现,不依赖外部库,支持大多数 JSON5 扩展语法
- 转换为标准 JSON 后,注释和尾随逗号等扩展语法将被移除
- 所有处理均在浏览器本地完成,不会上传任何数据
JSON5 知识详解
JSON5 vs 标准 JSON 差异对比
| 特性 | 标准 JSON | JSON5 |
|---|---|---|
| 注释 | ❌ 不支持 | ✅ 单行 // 和多行 /* */ |
| 尾随逗号 | ❌ 不允许 | ✅ 对象和数组末尾均可 |
| 字符串引号 | 仅双引号 " | ✅ 单引号 ' 和双引号均可 |
| 数字格式 | 仅十进制 | ✅ 支持十六进制 0xFF、Infinity、NaN |
| 多行字符串 | ❌ 不支持 | ✅ 行末加 \ 续行 |
| 对象键名 | 必须加引号 | ✅ 标识符可不加引号 |
JSON5 语法示例
{
// 单行注释
name: 'JSON5 示例', // 键名无需引号,值可用单引号
version: 1, // 尾随逗号合法
/* 多行注释
可以跨越多行 */
hex: 0xFF, // 十六进制数字
multiline: '第一行\
第二行', // 多行字符串
list: [
'item1',
'item2', // 数组尾随逗号
],
}
主流语言的 JSON5 支持
| 语言/平台 | 库/工具 | 说明 |
|---|---|---|
| JavaScript | json5 npm 包 | 官方参考实现,MIT 协议 |
| Python | pyjson5 | 支持读写 JSON5 文件 |
| Java | json5-java | Maven 可用 |
| VS Code | 内置支持 | settings.json 支持注释(JSONC 格式) |
| TypeScript | tsconfig.json | TypeScript 配置文件原生支持注释 |