K
ken
首页文章🕐 时间转换📋 JSON 工具🖼️ Base64 图片🔑 密码生成 Cron 表达式🔤 命名转换📱 二维码生成#️⃣ 哈希计算🔡 编码转换🔍 正则表达式⚙️ 配置文件格式转化🔐 加解密⚖️ BMI 计算🎲 随机数据🗜️ 图片工具🌍 世界时钟🏛️ 罗马数字🔢 数字转中文💰 贷款计算

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 数据。

使用方法

  1. 在左侧编辑区粘贴 JSON 字符串或结构体定义
  2. 顶部切换输入模式:JSON 或 结构体定义(Go/TypeScript)
  3. 右侧标签页切换输出视图:格式化 / 压缩 / 树形 / 结构体 / 示例
  4. 代码结构体模式:选择目标语言,自动生成对应类型定义,一键复制到项目中
  5. 示例生成模式:粘贴 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"
  }
}

相关工具推荐