# JSON 格式化工具

URL: https://discuvr.org/json-formatter/?hl=zh-hans
Last updated: 2026-11-07
MCP tool: `format_json`

粘贴 JSON，即刻获得缩进、压缩或校验后的结果。JSON 出错时会给出准确的行号和列号，并显示出错的那一行。不会存储任何内容。

来自 API 日志或配置文件的 JSON 通常是一长行,而无法解析的 JSON 通常会在你看不到的地方出错。这个工具会为其添加缩进以便阅读,在需要精简时进行压缩,而当它损坏时会告诉你具体的行号和列号并显示那一行。

## 功能说明

- 用 2 个空格、4 个空格或制表符美化 - 或压缩为最小的有效形式。
- JSON Lines 输出:每行一条紧凑记录,适用于日志和流式格式。
- 精确的错误提示 - 消息、行号、列号以及周围的行。
- 可选择对每个对象的键排序,以便两份文档能有意义地进行对比。
- 可选择将非 ASCII 字符转义为 \uXXXX,适用于无法处理 UTF-8 的系统。
- 可选择接受注释和末尾逗号,并准确告知删除了什么内容。
- 报告文档结构:键、对象、数组、嵌套深度以及节省的大小。

## 工作原理

1. 粘贴 JSON,或者你以为是 JSON 的内容。
2. 选择美化、压缩或 JSON Lines,然后点击格式化。
3. 复制或下载结果 - 或阅读错误提示并修复它指出的那一行。

## 为什么错误提示比格式化本身更重要

大多数时候,你来这里不是为了让 JSON 变得美观 - 而是因为某个地方拒绝了它却没说明原因。解析器会报告行号、列号以及它期望的内容,工具会打印出那一行以及周围两行。配置文件第四百行缺少一个逗号,一旦你知道它在哪里,三十秒就能修好。

## 注释和末尾逗号

JSON 从未允许过这两者,但人们实际交给你的文件 - tsconfig、VS Code 设置、任何手工编辑过的东西 - 里面到处都是。勾选该选项会在解析前将它们去除,工具随后会说明去除了多少注释和多少逗号。这是可选的,并会被精确报告,因为一个默默修改你文档的格式化工具,比一个直接拒绝它的工具更糟糕。

## 它不会做的事

它不会猜测你的意图。除了上面两种删除之外,不会修复任何东西:未闭合的大括号、单引号的键或没有引号的键只会被报告,而不会被重写。排序键和重新缩进从不改变数组的顺序,也从不改动字符串。下一节列出了输出仍可能与你粘贴的内容不同的少数情况。

## 数字、重复的键和 NaN

你的 JSON 会被解析后重新写出,所以有些内容会以规范化的形式返回。数字会被重新书写:1.50 变成 1.5,1E3 变成 1000.0,-0 变成 0,位数超过 64 位浮点数所能容纳的小数会被舍入(0.1000000000000000055 变成 0.1)。整数在 4,300 位以内保持精确(更长的会被拒绝)。如果一个对象重复了某个键,只保留最后一个值,且没有任何警告。NaN、Infinity 和 -Infinity 会被接受并原样输出,尽管标准 JSON(RFC 8259)不允许它们;超出浮点数范围的数字,例如 1e400,会输出为 Infinity。如果这些对你要导入数据的系统很重要,请在相信"没有错误"的结果之前自行检查。

## 问题

**我的 JSON 会被上传或存储在某处吗?**

它会被发送到服务器进行解析,并在同一响应中直接返回。不会写入磁盘、不会被缓存、不会被记录日志,使用记录只保留计数 - 大小、嵌套深度、所选模式 - 绝不会保留文档本身。

**为什么我的编辑器接受它,这里却说我的 JSON 无效?**

通常是因为注释、末尾逗号、单引号或未加引号的键 - 这些在配置文件中很常见,但都不是合法的 JSON。前两种情况请勾选"允许注释和末尾逗号";其余的确实无效,必须修复。

**它能处理大文件吗?**

每次请求最多 2,000,000 个字符;更长的文本会被拒绝,并给出其确切长度。对于这种大小的文件,jq 这样的命令行工具是更好的选择。

**JSON Lines 是做什么用的?**

日志管道和流式加载器会逐行读取一个 JSON 对象,而不是读取一个大数组。选择它,顶层数组就会以每行一条紧凑记录的形式返回。

**排序键会改变我的数据吗?**

不会。对象的键顺序在 JSON 中没有意义,而有意义的数组顺序则永远不会被触碰。排序的存在是为了让同一文档的两个版本可以在没有噪音干扰的情况下进行比较。

**如何在 Excel 中打开这个 JSON？**

在 Microsoft 365 版 Excel 中，把它保存为 .json 文件，然后选择 Data > Get Data > From File > From JSON（数据 > 获取数据 > 来自文件 > 从 JSON）。Power Query 会打开它：顶层数组显示为 List，To Table（到表）把它变成一列 Records，列标题上的展开按钮（两个箭头）会把每个键拆成单独的列；展开嵌套数组会为每个元素增加一行。Power Query 需要一个有效的 JSON 文档，所以请先在这里修正错误，这里会给出行号和列号，然后保存美化或压缩的输出；JSON Lines 输出是给日志工具用的。本工具本身不会把 JSON 转成 CSV 或 Excel。

**如何在命令行中校验或格式化 JSON？**

Python 自带校验工具：python -m json.tool data.json 会以 4 个空格缩进输出文档，或者以 Expecting ',' delimiter: line 3 column 3 这样的消息停止。如果装了 jq，jq . data.json 会格式化输出，jq empty data.json 只做校验，文件有效时不输出任何内容。两者都不接受注释和尾随逗号，所以带有这些内容的配置文件会在那里报错；把它粘贴到这里并勾选「允许注释和尾随逗号」，就能看到删掉了什么。

**「Expecting property name enclosed in double quotes」是什么意思？**

解析器在这里需要一个对象的键，却遇到了别的内容。最常见的原因是键用了单引号或没有引号，例如从 Python 或 JavaScript 复制来的 {'name': 'Asha'}，会在第 1 行第 2 列停止：JSON 要求每个键和字符串都用双引号括起来，而本工具从不改写引号，所以需要自己修改。如果同样的消息出现在右花括号处，例如 {"a": 1,}，说明有尾随逗号；勾选「允许注释和尾随逗号」即可去掉。在 True、False 或 None 处出现 Expecting value，说明这是 Python 的值：JSON 中写作小写的 true、false 和 null。在 Python 中，json.dumps(data) 输出合法的 JSON，print(data) 则不是。错误信息按 Python 解析器的原文以英文显示，方便直接搜索这条消息。

**「Extra data」是什么意思？**

解析器已经读完一个完整的 JSON 值，之后又遇到了更多文本。常见原因：每行一个对象的 JSON Lines（NDJSON）日志，会在第 2 行第 1 列停止；前后粘贴了两个文档；或者最后一个右花括号后面有 // 注释，勾选「允许注释和尾随逗号」可以去掉。本工具一次只检查一个文档，所以请只粘贴一条记录，或者把各条记录用逗号隔开放进 [ ] 中；之后选择 JSON Lines，就会重新按每行一条输出。

## 更多开发者工具

- [Python Formatter](https://discuvr.org/python-formatter/?hl=zh-hans)
- [HTML 查看器](https://discuvr.org/html-viewer/?hl=zh-hans)
- [IP 子网计算器](https://discuvr.org/ip-subnet-calculator/?hl=zh-hans)
- [编码 / 解码](https://discuvr.org/encode-decode/?hl=zh-hans)

## 常一起使用

- [CSV 转 Excel](https://discuvr.org/csv-to-excel/?hl=zh-hans)

---

Part of Discuvr (https://discuvr.org/): Discuvr is a collection of free, focused tools for day-to-day professional work - office and data utilities, legal and compliance helpers, privacy and security checks, and developer formatters. Every tool has its own page, and most can also be called from ChatGPT or Claude over MCP.
