广告728 × 90
首页 开发工具 JSON格式化

JSON 在线格式化 / 美化工具

免费在线处理 JSON 数据,支持格式化、压缩、验证、转义。所有操作均在浏览器本地完成,数据不会上传至任何服务器,安全可靠。

✓ 完全免费 ✓ 无需注册 ✓ 数据本地处理 ✓ 语法高亮 ✓ 实时验证
等待输入...
0 字节 0 行 0 节点 深度 0
输入 JSON
格式化输出
广告728 × 90

全部功能

JSON 格式化美化
将压缩 JSON 展开为层次清晰的缩进格式,支持 2/4 空格及 Tab 三种缩进方式。
🗜
JSON 压缩
去除所有空格和换行,输出最紧凑的 JSON 字符串,有效减少数据传输体积。
JSON 语法验证
精确检测 JSON 语法错误,定位出错位置,帮助快速排查接口数据问题。
🔒
JSON 转义
将特殊字符转换为合法的转义序列,方便将 JSON 嵌入字符串变量或 URL。
🔓
JSON 去转义
将被转义的 JSON 字符串还原为标准可读格式,轻松处理日志和接口响应。
🔤
键名排序
对 JSON 对象键名按字母顺序递归排列,方便做版本差异比较。
🎨
语法高亮
键名、字符串、数字、布尔值、null 分色显示,JSON 结构一目了然。
📊
实时数据统计
实时显示字节数、行数、节点数、最大嵌套深度等 JSON 结构信息。
💾
一键下载
将格式化结果直接下载为 .json 文件,无缝融入日常开发工作流。

JSON 知识 & 使用教程

什么是 JSON?完整格式说明

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,最初由 Douglas Crockford 在 2001 年提出并推广。尽管名称中包含"JavaScript",但 JSON 完全独立于任何编程语言,如今几乎所有主流语言(Python、Java、Go、PHP、Swift 等)都内置了对 JSON 的支持。

JSON 的设计哲学是"易于人类读写、易于机器解析生成",它已成为 Web API 数据交换的事实标准,广泛应用于 RESTful API、配置文件、数据库文档存储(如 MongoDB)、移动应用数据传输等场景。JSON 的正式规范为 IETF RFC 8259。

JSON 的六种基本数据类型

  • 字符串(String):双引号包裹的 Unicode 文本,例如 "Hello, 世界"。特殊字符必须转义:\" 表示双引号,\\ 表示反斜杠,\n 表示换行。
  • 数字(Number):整数或浮点数,支持科学计数法。例如 42-3.142.5e10。不支持 NaN 和 Infinity。
  • 布尔值(Boolean):仅 truefalse,必须小写。
  • 空值(Null)null,必须小写,表示"无值"或"缺省"。
  • 对象(Object):无序的键值对集合,键必须是字符串,用 { } 包裹,键值对之间用逗号分隔。
  • 数组(Array):有序的值列表,用 [ ] 包裹,元素之间用逗号分隔,可包含任意类型的值。

一个完整的 JSON 示例

{
  "user": {
    "id": 10086,
    "name": "李明",
    "email": "[email protected]",
    "isVip": true,
    "balance": 299.50,
    "tags": ["developer", "designer", "writer"],
    "address": {
      "province": "广东",
      "city": "深圳",
      "district": "南山区",
      "zipCode": "518000"
    },
    "loginHistory": [
      {"date": "2024-01-10", "ip": "192.168.1.1"},
      {"date": "2024-01-15", "ip": "10.0.0.2"}
    ],
    "avatarUrl": null
  }
}
💡 重要提示:JSON 中所有字符串和键名必须使用双引号,不能使用单引号。对象和数组的最后一个元素之后不能有多余的逗号(即不允许"尾随逗号")。JSON 也不支持任何形式的注释。

如何使用本工具——详细步骤

格式化 JSON

将压缩或混乱的 JSON 数据粘贴到左侧输入框,工具会在粘贴后自动触发格式化,也可手动点击"⚡ 格式化"按钮。右侧输出框会展示带语法高亮的格式化结果,顶部状态栏显示当前 JSON 的字节数、行数、节点数和最大嵌套深度。

压缩 JSON

点击"🗜 压缩"按钮,工具会解析输入的 JSON 并去除所有多余的空格、换行和缩进,输出最紧凑的单行 JSON 字符串。这在将 JSON 用于网络传输或存储时非常有用,可以显著减小数据体积。

验证 JSON

点击"✅ 验证"按钮,工具会尝试解析输入的 JSON。若格式正确,右侧会显示绿色的"有效"提示;若有语法错误,会在输出区和错误提示区同时显示详细的错误信息,帮助您快速定位问题。

转义与去转义

当您需要将 JSON 字符串嵌入到另一个字符串中传递时(例如作为 HTTP 请求体中的某个字段值),使用"🔒 转义"功能。反之,若您从日志或接口中获取了一串带有大量反斜杠的转义 JSON,使用"🔓 去转义"将其还原为可读格式。

复制和下载结果

处理完成后,点击右侧面板右上角的"复制"按钮可将结果复制到剪贴板;点击"下载"按钮可将结果保存为带有时间戳的 .json 文件到本地。

🔐 隐私保障:本工具的全部处理逻辑均在您的浏览器本地运行,不依赖任何后端服务器。无论您处理的是商业数据、用户数据还是配置信息,都不会通过网络传输。

常见 JSON 语法错误及修复方法

在日常开发中,JSON 格式错误是非常常见的问题。以下整理了最常见的五类错误及其修复方法:

① 尾随逗号(Trailing Comma)

在对象或数组最后一个元素后面多了一个逗号是最高频的错误,在许多编程语言(如 JavaScript、Python)中这是合法的,但 JSON 规范不允许。

// ❌ 错误
{"name": "张三", "age": 28,}

// ✅ 正确
{"name": "张三", "age": 28}

② 使用单引号

JSON 严格要求使用双引号,单引号不合法,即便在 JavaScript 对象字面量中单引号是允许的。

// ❌ 错误
{'name': '张三'}

// ✅ 正确
{"name": "张三"}

③ 键名未加引号

与 JavaScript 对象不同,JSON 的键名必须用双引号包裹,裸键名是不合法的。

// ❌ 错误(JS 对象写法)
{name: "张三"}

// ✅ 正确(JSON 写法)
{"name": "张三"}

④ 字符串中的特殊字符未转义

字符串中出现的双引号、反斜杠、换行符等必须进行转义,否则解析器会误判字符串的边界。

// ❌ 错误
{"message": "He said "hello" to me"}

// ✅ 正确
{"message": "He said \"hello\" to me"}

⑤ 使用不支持的值类型

JSON 不支持 JavaScript 特有的 undefinedNaNInfinity、日期对象、函数等值类型。需要传递"无值"时应使用 null

JSON 与其他数据格式对比

JSON vs XML

XML 是 JSON 流行之前的主流数据交换格式,拥有属性、命名空间、DTD/Schema 等更丰富的结构表达能力。但 XML 语法冗长,同样的数据用 XML 表达的体积往往是 JSON 的 2-3 倍。JSON 更简洁、解析更快,更符合现代 Web 开发习惯,在 REST API 领域已全面取代 XML(SOAP)。XML 在企业级系统、文档管理和 Office 文件格式中仍有广泛应用。

JSON vs YAML

YAML 是 JSON 的超集(合法的 JSON 也是合法的 YAML),语法更简洁,支持注释,广泛用于配置文件(Kubernetes、Docker Compose、GitHub Actions、Ansible)。但 YAML 的缩进敏感性容易引入难以排查的 bug,解析速度也比 JSON 慢。Web API 通信场景首选 JSON,配置文件场景首选 YAML。

JSON vs Protocol Buffers

Protocol Buffers(Protobuf)是 Google 推出的高性能二进制序列化格式,体积比 JSON 小 3-10 倍,序列化/反序列化速度快 5-10 倍,但需要预定义 .proto Schema,且数据不具备人类可读性。Protobuf 适用于内部微服务间的高频通信,JSON 适用于公开 API 和需要可读性的场景。

JSON vs CSV

CSV 格式非常适合表格形式的纯数据,体积小,与 Excel、数据库导入导出兼容性强。但 CSV 无法表达嵌套结构,也缺乏数据类型信息。JSON 在表示复杂嵌套数据时有明显优势。数据分析和批量数据导入导出场景常用 CSV,而 API 通信和配置文件通常选择 JSON。

各主流语言处理 JSON 的方法

JavaScript / Node.js

// 解析 JSON 字符串
const obj = JSON.parse('{"name":"张三","age":28}');
console.log(obj.name); // 张三

// 序列化为 JSON(格式化输出,2空格缩进)
const json = JSON.stringify(obj, null, 2);
console.log(json);

Python

import json

# 解析 JSON 字符串
data = json.loads('{"name":"张三","age":28}')
print(data['name'])  # 张三

# 读取 JSON 文件
with open('data.json', encoding='utf-8') as f:
    data = json.load(f)

# 格式化输出(ensure_ascii=False 支持中文)
print(json.dumps(data, indent=2, ensure_ascii=False))

Java

// 使用 Jackson 库(最流行的 Java JSON 库)
ObjectMapper mapper = new ObjectMapper();

// 解析 JSON
User user = mapper.readValue(jsonString, User.class);

// 序列化对象为 JSON
String json = mapper.writerWithDefaultPrettyPrinter()
                    .writeValueAsString(user);

Go

import "encoding/json"

// 解析 JSON
var data map[string]interface{}
json.Unmarshal([]byte(jsonStr), &data)

// 序列化为 JSON(格式化输出)
output, _ := json.MarshalIndent(data, "", "  ")
广告300 × 250

常见问题解答 (FAQ)

这个 JSON 格式化工具是完全免费的吗?

是的,本工具完全免费,无需注册账号,无需付费订阅,所有功能(格式化、压缩、验证、转义等)均不限使用次数,永久免费提供。

我的 JSON 数据会被上传到服务器保存吗?

绝对不会。本工具的所有处理逻辑全部使用 JavaScript 在您的浏览器端本地运行,不依赖任何后端服务器。您输入的任何数据都不会通过网络发送,完全在您的设备上处理,数据隐私有绝对保障。

支持处理多大的 JSON 文件?

本工具在浏览器内存限制范围内可以处理任意大小的 JSON 数据。对于日常开发中的 API 响应(通常 10KB-5MB),处理速度即时无感知。对于超大 JSON 文件(50MB 以上),可能会有短暂卡顿,建议此时使用本地工具(如 VS Code + JSON 插件,或命令行工具 jq)处理。

格式化时提示"Unexpected token"是什么原因?

"Unexpected token"表示 JSON 解析器在某个位置遇到了意料之外的字符。最常见的原因有:

① 使用了单引号而非双引号;② 键名没有加双引号;③ 对象或数组的最后一个元素后面有多余的逗号(尾随逗号);④ 数据包含了 JavaScript 注释(// 或 /* */);⑤ JSON 数据不完整,括号没有正确闭合;⑥ 包含了 undefinedNaN 等 JSON 不支持的值类型。

JSON 中可以有注释吗?

标准 JSON(RFC 8259)不支持任何形式的注释,这是规范的明确规定。如果您需要在配置文件中写注释,可以考虑以下替代方案:JSONC(VS Code 的 settings.json 格式,支持 // 注释)、JSON5(扩展格式,支持注释和尾随逗号)、YAML(完整支持注释)、TOML(专为配置文件设计,支持注释)。

JSON 转义功能具体有什么用途?

JSON 转义场景举例:当你需要将一段 JSON 对象作为另一个 JSON 字段的字符串值传递时,就需要转义。例如,某个 API 的 payload 字段值本身是一段 JSON 字符串,这时就需要对内层 JSON 进行转义处理。

JSON 去转义场景举例:从日志系统、数据库 VARCHAR 字段或某些接口响应中获取的数据,可能以被转义的字符串形式存储,里面充满了 \"\\,使用去转义可以还原为可读的 JSON 格式。

如何在命令行中格式化 JSON?

推荐使用 jq 工具,这是 Linux/macOS 上功能最强大的命令行 JSON 处理工具:

• 格式化:echo '{"name":"张三"}' | jq .

• 从文件格式化:cat data.json | jq .

• 提取字段:cat data.json | jq '.user.name'

Python 内置方式(无需安装):python3 -m json.tool data.json

JSON 数字有精度限制吗?

JSON 规范本身对数字没有精度限制,但实际应用中受限于各语言的数值类型。JavaScript 使用 IEEE 754 双精度浮点数(64位),能精确表示的整数范围为 ±2^53(约 ±9007 万亿)。超出此范围的大整数(如雪花 ID)在 JavaScript 中处理时会出现精度丢失,建议以字符串形式传递大整数。Java 的 long 类型可以精确处理 64 位整数,Python 的整数类型则支持任意精度。

相关开发工具

🔗
URL 编码/解码
在线 URL encode/decode
🔐
Base64 编解码
字符串与文件 Base64 互转
时间戳转换
Unix 时间戳与日期互转
🔑
MD5 哈希计算
在线 MD5 / SHA256 加密
📝
正则表达式测试
在线 Regex 匹配调试工具
📋
YAML ↔ JSON
YAML 与 JSON 格式互转
🎨
CSS 格式化
CSS 美化与压缩工具
🔢
进制转换
二进制/十六进制/十进制互转
广告728 × 90