即时格式化、校验和压缩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.