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.14、2.5e10。不支持 NaN 和 Infinity。 - 布尔值(Boolean):仅
true或false,必须小写。 - 空值(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 字符串嵌入到另一个字符串中传递时(例如作为 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 特有的 undefined、NaN、Infinity、日期对象、函数等值类型。需要传递"无值"时应使用 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, "", " ")
常见问题解答 (FAQ)
是的,本工具完全免费,无需注册账号,无需付费订阅,所有功能(格式化、压缩、验证、转义等)均不限使用次数,永久免费提供。
绝对不会。本工具的所有处理逻辑全部使用 JavaScript 在您的浏览器端本地运行,不依赖任何后端服务器。您输入的任何数据都不会通过网络发送,完全在您的设备上处理,数据隐私有绝对保障。
本工具在浏览器内存限制范围内可以处理任意大小的 JSON 数据。对于日常开发中的 API 响应(通常 10KB-5MB),处理速度即时无感知。对于超大 JSON 文件(50MB 以上),可能会有短暂卡顿,建议此时使用本地工具(如 VS Code + JSON 插件,或命令行工具 jq)处理。
"Unexpected token"表示 JSON 解析器在某个位置遇到了意料之外的字符。最常见的原因有:
① 使用了单引号而非双引号;② 键名没有加双引号;③ 对象或数组的最后一个元素后面有多余的逗号(尾随逗号);④ 数据包含了 JavaScript 注释(// 或 /* */);⑤ JSON 数据不完整,括号没有正确闭合;⑥ 包含了 undefined、NaN 等 JSON 不支持的值类型。
标准 JSON(RFC 8259)不支持任何形式的注释,这是规范的明确规定。如果您需要在配置文件中写注释,可以考虑以下替代方案:JSONC(VS Code 的 settings.json 格式,支持 // 注释)、JSON5(扩展格式,支持注释和尾随逗号)、YAML(完整支持注释)、TOML(专为配置文件设计,支持注释)。
JSON 转义场景举例:当你需要将一段 JSON 对象作为另一个 JSON 字段的字符串值传递时,就需要转义。例如,某个 API 的 payload 字段值本身是一段 JSON 字符串,这时就需要对内层 JSON 进行转义处理。
JSON 去转义场景举例:从日志系统、数据库 VARCHAR 字段或某些接口响应中获取的数据,可能以被转义的字符串形式存储,里面充满了 \" 和 \\,使用去转义可以还原为可读的 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 规范本身对数字没有精度限制,但实际应用中受限于各语言的数值类型。JavaScript 使用 IEEE 754 双精度浮点数(64位),能精确表示的整数范围为 ±2^53(约 ±9007 万亿)。超出此范围的大整数(如雪花 ID)在 JavaScript 中处理时会出现精度丢失,建议以字符串形式传递大整数。Java 的 long 类型可以精确处理 64 位整数,Python 的整数类型则支持任意精度。
相关开发工具