mikaio.dev

JSON Formatter & Validator

Paste your JSON in the box below and click Format to pretty-print it, or Minify to compress it.

即时格式化、校验和压缩JSON

JSON(JavaScript对象表示法)是网页API、配置文件和数据存储中通用的数据交换格式。当你从API响应或调试工具里拿到一段原始的、紧凑的JSON时,格式化能在几秒钟内让它变得可读;而当你需要高效传输JSON时,压缩则会去掉所有不必要的空白字符。

使用方法

把JSON粘贴进输入框,选择"格式化"就能看到整齐缩进、便于阅读的版本,选择"压缩"则会去掉所有多余的空格和换行,得到体积最小的版本。如果JSON里有错误,工具会明确报告问题所在,而不是悄无声息地失败——这通常是在一大段从日志文件或API响应里粘贴过来的文本中,快速定位一个多余逗号或缺失括号最快的办法。

什么是JSON

JSON是一种基于文本的数据格式,用键值对(对象)和有序列表(数组)来表示结构化数据。它的语法脱胎于JavaScript的对象语法,但本身与具体语言无关——几乎每种编程语言都有对应的JSON解析器。

一份合法的JSON文档必须是以下几种类型之一:对象、数组、字符串、数字、布尔值(true或false),或者null。

合法JSON示例:

{

"name": "Alice",

"age": 30,

"scores": [95, 87, 91],

"active": true

}

JSON与XML的比较

JSON在很大程度上取代了XML,成为网络上占主导地位的数据交换格式,原因是它更简洁、更易读,而且天然贴合大多数编程语言的数据结构(对象和数组)。

一眼看清嵌套结构

格式化真正的价值,在对象和数组开始层层嵌套好几层时才显现出来,而这在真实的API响应里很常见。一大段压缩过、层层嵌套的JSON几乎没法用肉眼追踪——把一个开括号和它对应的、隔了好几行的闭括号对上号,正是那种计算机远比人类擅长的枯燥又容易出错的活。而带有一致缩进的格式化JSON,能把同样的结构变成可以一层一层跟随视线阅读的内容,这也是为什么几乎每个展示JSON的开发者工具——从浏览器开发者工具到API客户端——默认都会格式化显示,而不是直接展示服务器实际发送的那段紧凑原始字符串。

美化输出(格式化)

一段"压缩过"的JSON字符串不含任何多余空白:

{"name":"Alice","age":30,"scores":[95,87,91],"active":true}

虽然合法,但很难阅读。"美化"或者"格式化"会加上缩进和换行:每一层嵌套用2或4个空格缩进,这让深层嵌套的结构在视觉上变得容易理清。

JSON崛起简史

JSON是在2000年代初由道格拉斯·克罗克福德推广开来的,他注意到JavaScript自身的对象字面量语法中已经隐含了这样一种数据格式,于是把它记录下来并命名,而不是凭空发明了全新的东西。它出现的时机正好赶上了依赖AJAX的网页应用兴起,这类应用需要一种轻量的方式在浏览器和服务器之间交换数据,而不用整页刷新;再加上它和原生JavaScript对象极其相似,浏览器几乎可以"零成本"解析它。这种简洁性加上恰逢其时的结合,正是JSON在大约十年内取代更繁琐的XML、成为网页API默认选择的主要原因。

JSON在网页开发中的应用

网页API绝大多数都用JSON作为请求体和响应体的格式。浏览器的fetch() API和XMLHttpRequest都原生支持处理JSON。服务端语言用内置库解析JSON:Python的json库、JavaScript的JSON.parse、PHP的json_decode、Java的Gson/Jackson。

为什么格式化和压缩服务于不同目的

这两种操作之所以都存在,是因为JSON面向两种截然不同的读者。格式化、缩进过的JSON是给人看的:开发者查看API响应、调试配置文件,或者在开发过程中审查数据时,清晰的缩进能让嵌套对象和数组的结构一目了然,大大提升效率。压缩过的JSON是给机器看的:去掉每一个不必要的空格和换行,能减少需要在网络上传输或存储在磁盘上的字节数,当一份JSON数据每天要在服务器之间传输成千上万甚至上百万次时,这一点就很重要了。两种形式没有哪个更"正确",它们只是针对不同的读者做了优化,一个良好的工作流会根据当下是人还是机器在读,在两者之间灵活切换。

常见的JSON错误及排查方法

对象或数组最后一项之后多加了一个逗号,是最常见的错误之一——这在JavaScript对象字面量里是合法的,但在JSON里明确不允许。属性名必须始终是用双引号括起来的字符串,不带引号的键和单引号字符串在JSON里都是非法的,尽管这两种写法在JavaScript里都合法。标准JSON完全不支持注释,所以一个带有实用内联注释的配置文件(比如VS Code设置用的JSONC格式)严格来说并不是合法JSON,需要专门的解析器处理。正因为JSON的语法特意比JavaScript更严格,把一段JavaScript对象字面量直接复制进JSON字段,是这个工具帮你捕捉到的语法错误里非常常见的一种来源。

先校验,再信任数据

除了让JSON变得可读之外,这个工具还会校验它是否合法,这一点很重要,因为一个位置放错的字符就可能让一整段看起来正确无误的JSON彻底无法解析。与其在几百行文本里手动扫描一个丢失的逗号或没闭合的括号,不如把文本粘贴进来,让解析器精确报告问题出在哪里,把一场繁琐的肉眼搜索变成一个即时、精确的答案——这在调试一个程序拒绝接受的配置文件或API响应时尤其有价值。

私密且即时

所有处理都完全在你的浏览器中完成,格式化和压缩即时发生,你粘贴的任何JSON都不会被发送到任何地方、记录或分享,页面加载完成后即可离线使用。

JSON formatter FAQ

What is JSON?
JSON (JavaScript Object Notation) is a lightweight data interchange format. It uses human-readable text to represent data objects consisting of key-value pairs and arrays.
What does "format" do?
Formatting (also called "pretty-printing") adds proper indentation and newlines to make JSON human-readable. Minifying removes all whitespace to produce the smallest possible valid JSON string.
Does the validator fix errors?
No. The tool parses the JSON and reports the error if it is invalid. Fixing the error is left to the user.