JSON 工具
JSON 格式化、压缩、树形查看、结构体生成与示例生成
输入 JSON
📋
在左侧输入 JSON 开始使用
📖 JSON 工具使用说明
工具简介
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,已成为 Web 开发中最主流的数据格式。本工具提供 JSON 格式化、校验、压缩和代码结构体生成等一站式功能。
功能说明
- JSON 格式化:将压缩的 JSON 美化成缩进清晰的树形结构
- JSON 校验:检测 JSON 语法错误并提示具体位置
- JSON 压缩:去除空格和换行,生成紧凑格式
- 字段提取:列出 JSON 中所有的键路径和值的类型
- 生成代码结构体:一键将 JSON 转换为 Go、TypeScript、Rust、Python、Java 的类型定义
使用方法
- 将 JSON 粘贴到左侧编辑区
- 自动格式化并显示树形预览
- 在右侧查看字段结构、生成代码
- 选择目标语言生成对应的结构体定义
- 点击复制按钮获取结果
示例
输入压缩 JSON:
{"name":"Alice","age":30}
格式化后:
{
"name": "Alice",
"age": 30
}
生成 TypeScript:
interface Root {
name: string;
age: number;
}
应用场景
- 调试 API 接口时格式化返回的 JSON 数据
- 定义接口数据结构时从示例 JSON 生成类型定义
- 前后端联调时校验 JSON 格式是否正确
- 编写配置文件时检查 JSON 语法
常见问题(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"
}
}