FormatArc JSON 格式化器的运行结果FormatArc JSON 格式化器的运行结果
作者: FormatArc发布日期: 2026-09-02更新日期: 2026-10-08

JSON 是什么?格式、语法、数据类型与实际用途(2026 入门)

如果你做过前端开发、调过 API,或者翻过 IDE 的设置文件,大概率已经和 JSON 打过不少交道了。但"JSON 到底是什么格式""它和 XML 有什么区别"这些问题,真正要自己解释的时候还是容易卡住。这篇文章从定义、语法、数据类型讲到实际用途和常见错误,帮你把 JSON 一次搞清楚。

JSON 是什么

JSON(JavaScript Object Notation)是一种让机器和人都能轻松读写的文本数据格式。名字里虽然有 JavaScript,但它不绑定任何特定语言——Python、Java、Go、PHP 等主流语言都能直接解析。

JSON 起源于 JavaScript 的对象字面量语法。2000 年代初,Douglas Crockford 把它整理成独立规范,后来由 IETF 以 RFC 8259在新标签页中打开 和 Ecma International 以 ECMA-404在新标签页中打开 的形式完成标准化。

当时占主导的数据交换格式是 XML,但标签嵌套写起来很啰嗦。JSON 用更少的字符表达同样的数据,解析也更轻量,这种简洁让它迅速铺满了整个 Web 生态。

拿到一段 JSON 想看结构对不对、或者想格式化后方便阅读,可以直接粘贴到 FormatArc 的 JSON 格式化器。整个处理在浏览器里完成,你输入的数据不会被发送到任何服务器。

与其他数据格式的区别

JSON 是数据格式家族里的一员。拿它和 XML、CSV、YAML 对比,定位就很清楚了:

格式主要用途特点
JSONAPI / 数据交换面向机器的严格规则,语法简洁、解析快
XML遗留系统 / SOAP冗长但支持命名空间、Schema 校验
CSV电子表格 / ETL纯表格结构,不支持嵌套
YAML配置文件人写起来舒服,但解析规则复杂

JSON 之所以成为首选,是因为它卡在"机器好处理"和"人也能看懂"这个平衡点上。主流语言的标准库都自带 JSON 解析器,跨语言互操作几乎没有额外成本。

JSON 基本语法

JSON 里能用的数据结构只有两种:对象和数组。

对象

用花括号 {} 包裹,键值对之间用冒号(:)连接,多对之间用逗号(,)分隔。键必须是双引号字符串。

{
  "name": "李明",
  "age": 30,
  "city": "北京"
}

数组

用方括号 [] 包裹,元素之间用逗号分隔。可以混排不同类型,但实际开发中通常保持同一类型。

["苹果", "香蕉", "橘子"]

数据类型的完整规则和嵌套结构的细节,参见 JSON 语法指南。

JSON 的 6 种数据类型

JSON 能表达的数据类型正好是 6 种,规则和常见坑如下:

类型示例关键规则常见错误
字符串"hello"只用双引号单引号会报解析错误
数字42、3.14整数和浮点数不区分NaN、Infinity、前导零不合法
布尔值true、false全小写True、TRUE 都不行
nullnull全小写None、nil 不合法
对象{ "key": "value" }键必须双引号省略引号在 JS 里可以,JSON 里不行
数组[1, "a", null]有序,类型可混排最后一个元素后不能跟逗号

数字方面,整数、小数、科学计数法(6.626e-34)都可以直接写,不需要引号。NaN、Infinity、前导零(007)会导致解析失败。

对象和数组可以自由嵌套,这种结构是 JSON 能表达复杂数据的核心原因:

{
  "user": {
    "name": "李明",
    "hobbies": ["读书", "跑步"],
    "address": {
      "city": "北京市",
      "district": "朝阳区"
    }
  }
}

JSON 的实际应用场景

Web API 数据交换

REST API 和 GraphQL 的响应格式,JSON 已经是事实标准。你用浏览器 fetch 请求一个接口,返回的几乎一定是 JSON。

配置文件

Node.js 的 package.json、TypeScript 的 tsconfig.json、VS Code 的 settings.json——开发工具的配置几乎都用 JSON。人看得懂,程序也好解析,这是它成为配置文件默认选择的原因。

数据存储与日志

MongoDB 等 NoSQL 数据库用 JSON 类似的二进制格式(BSON)存储文档。日志采集系统也常用 JSON Lines(每行一个 JSON 对象)记录结构化日志。

表格数据转换

你从电子表格导出 CSV,想喂给 API 或后端应用,通常要转成 JSON。两种格式结构差异不小,都理解一下用起来会顺手很多。

手写 JSON 时容易踩的坑

JSON 语法看起来简单,但手写时几个约束很容易忽略。

不能写注释

JSON 没有注释语法。//、/* */、# 都不行。想在文件里留备注,只能加 "_comment" 之类的占位键,或者换用支持注释的格式(YAML、JSONC)。

不能有尾随逗号

最后一个元素后面不能有多余的逗号。这在 JavaScript 里合法,但 JSON 会直接报解析错误:

{
  "a": 1,
  "b": 2,
}

上面 "b": 2 后面的逗号必须删掉。

键必须加双引号

JavaScript 里可以写 { name: "李明" },但 JSON 里必须写 { "name": "李明" }。

顶层只能有一个值

一份 JSON 文档的顶层只能是一个对象或一个数组,不能并排放两个。

格式乱了、不确定有没有语法错误的时候,把内容丢进 JSON 格式化器 点一下就能同时完成排错和美化。

在代码中使用 JSON

主流语言都内置或通过标准库提供 JSON 支持。代码里的 JSON 操作只有两条路:把 JSON 文本解析成可处理的数据结构,再把数据结构序列化回 JSON 文本。

JavaScript 和 TypeScript 用内置的 JSON 对象:

// 把 JSON 字符串解析成对象
const data = JSON.parse('{"name": "李明", "age": 30}');

// 把对象转成 JSON 字符串
const json = JSON.stringify(data, null, 2);

stringify 后面的两个参数 null, 2 用来加缩进,让输出可读。不传它们会得到一行紧凑文本,适合网络传输,但不适合人阅读。

Python 用标准库的 json 模块:

import json

data = json.loads('{"name": "李明", "age": 30}')
text = json.dumps(data, indent=2)

不同语言的写法不一样,但模式相同:解析成原生数据结构、处理、再序列化回字符串。

格式化与校验 JSON

从 API 响应或日志文件拿到一段压缩成一行的 JSON,几乎没法读。格式化会加上缩进和换行,让结构能看清。

你可以像上面那样在代码里做,也可以把原始 JSON 粘贴到 JSON 格式化器,立刻得到排版整齐的版本。它同时会检查语法错误,排查格式有问题的响应时很有用。所有处理都在浏览器内完成,数据不会发送到任何服务器。

如何打开和创建 JSON 文件

JSON 文件其实就是一个文本文件。不需要安装任何软件,用任意文本编辑器(Windows 的记事本、macOS 的文本编辑)就能查看内容。如果双击后打开的是浏览器,可以把它拖进编辑器窗口,或在编辑器的“打开文件”菜单中指定扩展名。像 VS Code 或 Sublime Text 这样的代码编辑器会做语法高亮,括号不匹配的地方更容易发现。想快速看到格式化后的结果,粘贴到 JSON 格式化器里即可,处理过程都在浏览器内完成。

创建新的 JSON 文件也一样:在文本编辑器中写好 JSON,保存时加上 .json 扩展名即可。该扩展名在 RFC 8259 第 11 节中向 IANA 注册。

保存时请选择 UTF-8。RFC 8259 第 8.1 节规定,在系统之间交换的 JSON 文本必须用 UTF-8 编码,并且开头不能加 BOM。如果编辑器默认加 BOM 导致语法错误,请参考 JSON 解析错误指南中的 BOM 部分。

语法快速参考

下面是同时展示全部 6 种数据类型的完整 JSON 文档:

{
  "string": "你好",
  "number": 42,
  "float": 3.14,
  "boolean": true,
  "nullValue": null,
  "array": [1, 2, 3],
  "object": {
    "nested": "value"
  }
}

这就覆盖了全部 6 种类型。能看懂这份文档,就能读懂任何 JSON——剩下的只是组合。

常见问题

JSON 文件用什么打开?

任何文本编辑器都能打开。VS Code 这类 IDE 还会做语法高亮。想看格式化后的结构,粘贴到 FormatArc 的 JSON 格式化器最方便,不用装任何东西。在线美化、jq、JSON.stringify 三种方法怎么选,参见 JSON 排版工具。

JSON 和 JavaScript 对象是一回事吗?

不是。JavaScript 对象是内存里的活数据结构,JSON 始终是文本字符串。JavaScript 里允许的那些写法(省略键引号、定义函数、用 undefined、写尾随逗号),在 JSON 里基本都禁止。JSON.parse 把文本变成对象,JSON.stringify 把对象变成文本。

总结

  • JSON 是一种语言无关的轻量数据交换格式
  • 核心结构是对象({})和数组([])
  • 数据类型共 6 种:字符串、数字、布尔值、null、对象、数组
  • Web API 响应和配置文件是最高频的使用场景
  • 不能写注释、不能有尾随逗号、键必须双引号——手写时注意
  • 格式化和语法校验用 JSON 格式化器一键完成