JSON 工具
JSON(JavaScript Object Notation)是 Web 开发中最核心的数据交换格式——它轻量、可读、跨语言,是现代 API、配置文件、数据库 NoSQL 文档的事实标准。无论你是在调试 REST API 返回的响应、编写前端和后端之间的数据契约、还是编辑 VS Code 的配置文件,你都在和 JSON 打交道。这个工具集成了 JSON 格式化、压缩、校验、树形查看、代码结构体生成和示例数据生成六个功能,一站式解决 JSON 相关的工作流。
支持将 JSON 转换为 Go、TypeScript、Rust、Python、Java、Kotlin、Swift 等 10 种语言的类型定义(结构体/接口),也支持从 Go struct 或 TypeScript interface 反向生成示例 JSON。所有处理在浏览器本地完成,粘贴的 JSON 数据不会上传到任何服务器。
输入 JSON
📋
在左侧输入 JSON 开始使用
📖 JSON 工具使用说明
什么是 JSON?
JSON(JavaScript Object Notation)是一种轻量级的纯文本数据交换格式,由 Douglas Crockford 在 2001 年提出。它基于 JavaScript 对象语法,但独立于语言——几乎所有主流编程语言都有 JSON 解析器。JSON 只支持六种数据类型:字符串、数字、布尔值、null、数组和对象。它的简洁性和跨语言兼容性使其取代 XML 成为 Web API 的标准格式——现在你遇到的 99% 的 REST API 都使用 JSON。
六大核心功能
- 格式化:将压缩的、难以阅读的 JSON 美化为带缩进的树形结构。也支持自定义缩进空格数(2/4/tab),方便粘贴到不同风格的代码中。
- 压缩:去除所有空格和换行,生成最紧凑的 JSON 字符串。适用于减少网络传输体积或嵌入 URL 查询参数中。
- 校验:实时检测 JSON 语法错误,并精确定位到出错行和列。常见错误包括:末尾多余逗号、键名未用双引号、使用了单引号、注释等。
- 树形查看:交互式展开/折叠 JSON 的树形层级结构,直观浏览字段关系和嵌套深度。
- 代码结构体生成:根据 JSON 数据自动生成 Go、TypeScript、Rust、Python、Java、Kotlin、Swift、C#、Dart、Scala 共 10 种语言的类型定义(struct/interface/data class)。支持 use
泛型模式、可选字段、omitempty 标签等选项。 - 示例 JSON 生成:反向功能——粘贴 Go struct 或 TypeScript interface 定义,生成符合该结构体的示例 JSON 数据。后端给前端接口定义时可以快速生成 mock 数据。
使用方法
- 在左侧编辑区粘贴 JSON 字符串或结构体定义
- 顶部切换输入模式:JSON 或 结构体定义(Go/TypeScript)
- 右侧标签页切换输出视图:格式化 / 压缩 / 树形 / 结构体 / 示例
- 代码结构体模式:选择目标语言,自动生成对应类型定义,一键复制到项目中
- 示例生成模式:粘贴 struct/interface,生成对应的示例 JSON 用于 mock
常见错误与解决
- 末尾逗号:{"a": 1,} — JSON 不允许对象或数组最后一个元素后面有逗号。去掉末尾逗号即可。这是最常见的新手错误,因为 JavaScript 和 Python 都允许尾随逗号,但 JSON 不允许。
- 键名未加引号:{name: "Alice"} — JSON 要求所有键名必须用双引号包裹:{"name": "Alice"}。单引号也不行:{'name': "Alice"} 是无效 JSON。
- 注释:JSON 不支持 /* */ 或 // 注释。如果需要注释,考虑使用 YAML 格式,或使用 JSONC(VS Code 的 JSON with Comments 变体)。
命令行替代方案
# Python 格式化 JSON
echo '{"a":1,"b":2}' | python3 -m json.tool
# 使用 jq 格式化并高亮
echo '{"a":1,"b":2}' | jq .
# jq 提取特定字段
echo '{"users":[{"name":"Alice"},{"name":"Bob"}]}' | jq '.users[].name'
# Node.js 格式化 JSON
node -e "console.log(JSON.stringify(JSON.parse(process.argv[1]), null, 2))" '{"a":1}'
常见问题(FAQ)
JSON 和 JavaScript 对象字面量有什么区别?
JSON 是一种跨语言的数据交换格式,而 JavaScript 对象字面量是 JS 语言特有的数据类型。JSON 语法更严格:键名必须用双引号,字符串必须用双引号,undefined、函数、Symbol 等 JS 特有类型不能使用,且末尾不能有逗号。JSON 可以被任意语言解析,对象字面量则只能在 JS 中使用。
JSON 支持注释吗?
标准 JSON 不支持注释。这是 JSON 创始人 Douglas Crockford 有意为之——去掉可选功能让解析器更简单。VSCode 等编辑器支持 JSONC(带注释的 JSON),但这不是标准。如果需要注释,建议使用 YAML 格式。
如何判断一个字符串是否为合法 JSON?
最可靠的方法是使用 JSON.parse() 尝试解析。如果抛出异常则说明不是合法 JSON。常见的非法情况包括:键名未用双引号、使用了单引号、末尾有多余逗号、存在注释等。本站的 JSON 工具会实时校验输入,并自动标记错误位置。
JSON 中的大数字会丢失精度吗?
JSON 规范不限制数字范围,但 JavaScript 的 Number 类型是 64 位双精度浮点数,安全整数范围是 -2^53 到 2^53(约 9 千万亿)。超出此范围的整数会丢失精度。解决方案是用字符串表示大整数,例如 JSON 中写成 "id": "9007199254740993"。
JSON 和 XML 有什么区别?
JSON 和 XML 都是数据交换格式。JSON 更简洁:没有结束标签,解析更快,数据体积更小。XML 的优势在于支持属性、命名空间和 Schema 校验。目前 REST API 几乎全部使用 JSON,SOAP 等旧协议仍使用 XML。
使用示例
用户信息
一个包含字符串、数字、布尔值、数组和嵌套对象的用户信息 JSON。
{
"name": "张三",
"age": 28,
"email": "zhangsan@example.com",
"active": true,
"tags": ["developer", "backend"],
"address": {
"city": "北京",
"district": "海淀",
"zip": "100000"
}
}API 响应
常见的分页 API 响应格式,包含数据列表和分页信息。
{
"code": 200,
"message": "success",
"data": {
"items": [
{ "id": 1, "title": "文章一", "views": 1234 },
{ "id": 2, "title": "文章二", "views": 892 },
{ "id": 3, "title": "文章三", "views": 567 }
],
"pagination": {
"page": 1,
"pageSize": 10,
"total": 56
}
}
}配置文件
应用程序的 JSON 配置文件,展示多级嵌套的实际用法。
{
"app": {
"name": "MyApp",
"version": "2.1.0",
"debug": false
},
"database": {
"host": "localhost",
"port": 5432,
"pool": {
"min": 2,
"max": 10
}
},
"logging": {
"level": "info",
"format": "json"
}
}