写给小白的JSON完全指南:5分钟理解AI和开发者都在用的数据格式

写给小白的JSON完全指南:5分钟理解AI和开发者都在用的数据格式

4.8
0热度

 最近研究 n8n , 发现各种输入、输出都用到 JSON 格式。对 AI 开发来说, 为了生成可控,也会用这种格式。比如,很多大模型公布技术指标时,都会说支持 Structured Outputs(结构化输出)往往指的的就是支持 JSON 输出(Object 和 Schema)。经常听到这个术语,也懵懵懂懂用过,但总觉理解的不深。索性用 Gemini Deep Research

 

最近研究 n8n , 发现各种输入、输出都用到 JSON 格式。

对 AI 开发来说, 为了生成可控,也会用这种格式。

比如,很多大模型公布技术指标时,都会说支持 Structured Outputs(结构化输出)

往往指的的就是支持 JSON 输出(Object 和 Schema)。

经常听到这个术语,也懵懵懂懂用过,但总觉理解的不深。

索性用 Gemini Deep Research 调研生成教程。

自己先学,再教大家。

第一部分:搞清楚JSON是什么

第一章:一场意外革命的故事

1.1. 简单的答案:一种通用的数据语言

JSON,全称为 JavaScript Object Notation,即“JavaScript 对象表示法”。

它是一种专门用来组织和交换数据的文本格式。

设计初衷很简单:

既要让人看得懂、写得顺手,也要让计算机能快速解析和生成。

你可以把 JSON 想象成程序世界里的“通用翻译官”。

不管这些程序用什么语言写成,跑在哪台电脑上,只要用上 JSON,彼此就能顺畅交流。

打个比方:

  • • Word 文档(.docx)是用来写文章的,
  • • Excel 表格(.xlsx)是用来整理数据的,
  • • 而 JSON 文件(.json),就是专门用来保存程序需要用的数据。

比如通讯录里的联系人列表,或者网站为你保存的个人设置。

不过,JSON 主要是给计算机“看的”——它让机器能高效地读取和处理信息。

1.2. 起源:需求中诞生的解决方案

JSON 诞生于 21 世纪初,背后有一段有趣的硅谷故事。

主角是道格拉斯·克罗克福德(Douglas Crockford)和奇普·莫宁斯塔(Chip Morningstar),他们当时在 State Software 公司共事。

那时,他们正试图开发一种全新的“单页 Web 应用”(Single-Page Web Applications)——这个概念在当时还很新鲜。

最大难题,是如何让服务器(通常用 Java 写)能实时把数据发到浏览器(运行 JavaScript),又不想依赖笨重的 Flash 或 Java 插件。

就在这个背景下,克罗克福德有了一个灵感:JavaScript 里本来就有一种简单的对象和数组写法(比如 {"key": "value"} ),其实天然适合用来表达结构化数据,既轻巧又易懂。

2001 年 4 月,第一条 JSON 消息就从莫宁斯塔家车库的一台电脑发出——标准的“硅谷车库起步”桥段。

至于命名,他们本来想叫 JSML(JavaScript Markup Language),但名字已经被占用了。

最后,他们决定用 JSON(JavaScript Object Notation)这个名字,并在 2002 年上线了 json.org 网站,正式发布了这个格式的规范。

1.3. 设计哲学:极简、“无脂肪”风格

克罗克福德设计 JSON 的核心原则就是极致简约。

他希望 JSON 足够简单,成为 JavaScript 的一个文本子集,这样可以直接应对当时各种数据交换格式过于复杂的问题。

有个有趣的小插曲:他在 JSON 的开源许可证里特意加了一句“软件只能用于善,不得用于恶”(The Software shall be used for Good, not Evil)。

这并不是严格的法律条款,更像是对那些过于死板的公司律师的一种调侃,也体现了 JSON 诞生时的开放、自由氛围。

另一个关键的设计决定,就是有意不支持注释

克罗克福德的理由很直接——他发现开发者经常用注释来塞进各种解析指令,这样会让不同系统之间的数据交换变得混乱。

他想让 JSON 保持“纯净”,只做一件事:无歧义地表达数据。

其实,JSON 能流行起来,并不是靠什么宏大的顶层设计,而是因为它解决了实际问题。

最初,它只是个聪明的“权宜之计”——用浏览器自带的 JavaScript 引擎,巧妙地绕开了对 Flash、Java 插件的依赖,直接让数据在浏览器和服务器之间流动。

克罗克福德敏锐地发现,这种做法其实有普遍价值。

当时主流的解决方案又重又麻烦,还得装插件。

JSON 刚好用上了浏览器已经内置的 JavaScript 语法,所以采用起来几乎没有门槛。

这种实用、优雅的思路,让 JSON 很快被更多开发者接受和推广开来。

第二章:为什么选 JSON?到底解决了什么问题

2.1. 在 JSON 之前:XML 一统天下

在 JSON 诞生之前,数据交换的主流格式是 XML(可扩展标记语言,Extensible Markup Language)。

XML 功能很强大,但也出了名的繁琐和复杂。

为了让你直观感受两者的差别,我们可以把同样的一份用户配置信息,分别用 JSON 和 XML 表达出来作对比。

XML示例:

  
  张三  
      30  
      false  
       
        历史  
        数学  
       

JSON示例:

{  
  "name": "张三",  
  "age": 30,  
  "isStudent": false,  
  "courses": [  
    "历史",  
    "数学"  
  ]  
}

一比较就能看出,XML 需要一大堆成对的开始和结束标签,写起来和看起来都很冗长、啰嗦。

当年,XML 社区一直把自己当作“颠覆者”,所以面对更简洁的 JSON 迅速流行,很多人心里其实很不是滋味。

对于这种争议,克罗克福德曾经对一位 XML 支持者说过一句很有名的话:

“重新发明轮子的最大好处,就是你终于能造出一个真正圆的轮子。”

2.2. JSON的关键优势

更容易读写:

跟一堆标签包裹的 XML 不同,JSON 的语法非常简洁,写起来、看起来都很直观,哪怕不是程序员也能大致看懂。

对机器友好:

结构简单、体积小,电脑处理起来又快又省资源。

这意味着数据传输更高效,尤其适合 Web 和移动端这种对速度和流量要求高的场景。

天生适配 JavaScript:

这是 JSON 在 Web 开发领域最强的优势。

一个 JSON 字符串,直接用 JSON.parse() 就能变成 JavaScript 对象,反过来用 JSON.stringify() 也能轻松搞定。

全程不需要复杂的解析工具。

而 XML 则必须用专门的解析器,处理起来麻烦得多。

2.3. 生态崛起

JSON 的流行,其实和 21 世纪中期 AJAX 技术的兴起密不可分。

虽然 AJAX 里的 “X” 代表的是 XML,但开发者们很快发现,JSON 更简单好用,纷纷转向了它。

2005 到 2006 年,像雅虎(那时克罗克福德就在雅虎)和谷歌这样的互联网巨头,开始在自家 Web 服务里直接提供 JSON 格式的数据。

这一下,JSON 就彻底进入了主流视野。

最后,JSON 也实现了标准化。

2013 年,ECMA International 正式发布了 ECMA-404 标准;

同年,RFC 7158 也将其收录为参考。

从此,JSON 成为一个稳定、可靠、与编程语言无关的国际标准。

表1:主流数据格式一览

格式
文件扩展名
主要用途
最贴切的比喻
Microsoft Word
.docx
写文章、报告等复杂排版的文档
一本排版精美的书
Microsoft Excel
.xlsx
管理和计算表格数据
一本账本或电子表格
JSON
.json
程序之间交换、保存结构化数据 一套有条理的索引卡片
CSV
.csv
存储简单表格数据,纯文本格式
一张用逗号分隔的清单
XML
.xml
存储分层数据,包含丰富的元信息
一份自带说明的结构化手稿

简单说,JSON 就是“面向机器的数据卡片”。

不是像 Word 那样给人看的文档格式。

第二部分:如何看懂 JSON

下面详细讲讲 JSON 的语法。

每条规则都会配上例子,特别关注新手容易搞混的地方。

第三章:六种核心数据类型

JSON 只支持六种数据类型,每种都很简单:

类型
说明
示例
注意事项
字符串
用双引号括起来的一串字符
"hello world"
只能用双引号,不能用单引号
数字
整数或小数,不加引号
123
3.14-100
不能有前导零(如 01
布尔值
只有 true 或 false,小写且不加引号
true
false
必须小写
空值
用 null 表示,表示特意留空
null
不加引号
数组
方括号括起来的有序值列表
[1, "apple", true, null]
可嵌套其他类型
对象
花括号括起来的无序键值对集合
{"name": "张三", "age": 30}
key 和字符串都要双引号

第四章:JSON 语法的铁律

JSON 有一些必须遵守的“硬规则”,和 JavaScript 对象有不少区别:

当然可以,下面是适合移动端阅读的简明表格:

规则
要点说明
键值对
数据都是 key: value 形式,key 必须是字符串
双引号
key 和字符串值都要用双引号,不能用单引号
逗号
元素之间用逗号分隔
无尾逗
最后一个元素后不能有逗号
括号
对象用 {},数组用 []
无注释
不允许写注释

照着这些规则写,JSON 基本不会出错。

很多人说 JSON 是 “JavaScript 的一个子集”,但其实没那么简单。

有些能通过 JSON 校验的内容,放到 JavaScript 代码里反而会报错。

同样,有些 JavaScript 对象写法,放到 JSON 里也不合规。

比如,JSON 允许字符串里出现一些特殊的换行符,但早期 JavaScript 其实不认这些。

反过来,JavaScript 对象可以用单引号、键名不用引号、末尾多一个逗号,甚至还能写函数和 undefined。

这些在 JSON 里全都不行。

所以,JSON 和 JavaScript 对象的关系,更像是两个有重叠的大圈。

说 JSON “基于” JavaScript 语法,比叫它“严格子集”更准确。

明白这个区别,有助于避免把 JS 里的写法直接搬进 JSON 导致出错。

第五章:为什么我的JSON报错了?

常见错误
错误示例
正确写法
缺少逗号
{ "name": "John" "age": 30 }
{ "name": "John", "age": 30 }
末尾多逗号
{ "name": "John", "age": 30, }
{ "name": "John", "age": 30 }
要用双引号
{ "name": "John", "age": 30 }
{ "name": "John", "age": 30 }
键没加引号
{ name: "John", age: 30 }
{ "name": "John", "age": 30 }
括号不匹配
{ "data": ["item1", "item2" }
{ "data": ["item1", "item2"] }
无效数据类型
{ "value": undefined }
{ "value": null }
包含注释
{ "name": "John" // 这是一个名字 }
{ "name": "John" }

推荐几个常用的 JSON 在线校验工具,打开即可用:

  • • https://jsonlint.com/
  • • https://jsonformatter.org/
  • • https://jsonchecker.com/

第三部分:学会在哪里用JSON

从理论走向现实世界,展示JSON在软件开发不同领域的普遍应用。

第六章:Web开发里的“通用语言”

6.1. AJAX 和 Fetch API

JSON 最常见的用武之地,就是前端和后端之间的通信。

比如你在网页上点赞、加载评论,浏览器其实都在后台和服务器“对话”。

这种对话几乎都是用 JSON 传递数据。

这种技术叫 AJAX,它的厉害之处在于——不用刷新整个页面,就能让网页的某一部分内容动态更新。

现在,开发者更常用的是 Fetch API,它让数据请求和处理变得更简单、更现代。

6.2. 实战举例

假设你要获取用户信息。

浏览器里的 JavaScript 会用 fetch() 方法,向服务器的某个接口发出请求。

服务器收到请求后,从数据库查出用户资料,把它们打包成 JSON 格式发回来。

浏览器拿到这个 JSON 字符串后,用 response.json() 一步到位,把它变成 JavaScript 对象。

这样,程序就能像操作普通对象一样,直接读取用户名、头像等信息,然后把这些内容展示到网页上,实现动态交互。

这个流程,就是前端和后端用 JSON 作为“通用语言”顺畅沟通的完整闭环。

第七章:API——数字世界的“胶水”

7.1. JSON 和 RESTful API

API,就是让不同软件能互相“说话”的接口。

REST 是设计 API 的一种主流方法。

REST 的全称是 Representational State Transfer,中文叫“表述性状态转移”。

它是一种设计 Web 接口的理念,目的是让不同的软件可以高效、简单地交换数据。

“RESTful” 就是指“遵循 REST 原则”的接口或者系统。

在 RESTful 的接口里,大家约定用统一的 URL 结构来表示各种资源。

比如 /users/123 代表编号为 123 的用户。

操作这些资源时,直接用 HTTP 方法:GET 读取、POST 新增、PUT 修改、DELETE 删除。

每次请求都自带所有需要的信息,不依赖前后文,这样接口更独立,也更容易维护。

而在数据格式上,JSON 已经成了事实上的标准。

无论是网页、App,还是后台系统,彼此之间的数据传递,几乎都是用 JSON。

所以,RESTful API 就是“用 REST 规范 + JSON 格式”来沟通的接口。

这让软件之间的交流变得简单、高效、易于理解。

不管是手机 App 查天气,还是企业后台系统对接订单,数据基本都是用 JSON 来传递。

JSON 就像一辆快递车,把信息安全、快速地送到对方手里。

7.2. API 响应长什么样?

以 GitHub 的 API 为例。

当你请求某个用户的信息时,GitHub 会返回一段 JSON 数据。

这段数据里有用户名、头像地址、粉丝数等内容,层次分明,非常直观。

应用程序收到 JSON 后,立刻就能解析出来,把这些信息展示在用户界面上。

原本抽象的 API,就这样变得具体、可见、好用。

第八章:配置文件——软件的“设置中心”

8.1. 为什么用 JSON 做配置?

JSON 结构清晰,格式简单,人也能直接读懂。

这让它特别适合用来存储各种软件的“设置”。

开发者只需要打开配置文件,就能快速调整参数,而不用去改动核心代码。


8.2. 案例:VS Code 的 settings.json

以 Visual Studio Code 为例。

它的所有用户设置和工作区设置,都保存在 settings.json 这个文件里。

你想改字体大小、开启自动保存、为某种语言加代码片段,只需修改这个文件就行。

这里的每一项设置,都是“键值对”或者更复杂的嵌套对象。

这正是 JSON 在实际中的典型用法。


8.3. 案例:移动 App 的 app.json

再比如做移动应用开发,很多框架(如 Expo)都用 app.json 作为主配置文件。

这里面可以定义 App 的名字、图标、推送通知样式、启动画面,甚至更新策略。

比如,设置 "orientation": "portrait",就能让 App 只用竖屏显示。

配置 "notification": {...},就能分别控制安卓和 iOS 的通知细节。

有些移动应用还会把数据用 JSON 存在本地,这样即使没网,也能正常运行。

JSON 让配置变得灵活、透明,也方便团队协作和自动化管理。

第九章:数据存储的新趋势

9.1. 关系型数据库也能玩 JSON

现在很多主流的关系型数据库,比如 PostgreSQL,都已经支持直接存储 JSON 数据了。

PostgreSQL 甚至有专门的 jsonb 类型。

它会把 JSON 数据高效地转成二进制存储,还能对里面的嵌套字段做索引和查询。

这样一来,开发者既能用表格结构的优点,又能享受 JSON 的灵活性。

9.2. NoSQL:JSON 是核心

很多 NoSQL 数据库,尤其是像 MongoDB 这样的文档型数据库,天生就是围绕 JSON 来设计的。

在这里,数据不是行和列,而是一个个“文档”。

这些文档,其实就是一个个 JSON 对象。

这种方式非常灵活,数据结构可以随需求随时调整。

这也是 NoSQL 能快速适应业务变化、越来越受欢迎的重要原因。

第四部分:动手写一个 JSON

第十章:实践——做一张“个人信息卡”

10.1. 目标

我们来亲手写一个 JSON 文件,记录自己的基本信息。

你会发现,其实很简单。


10.2. 步骤分解

  1. 1. 打开一个纯文本编辑器,比如记事本、VS Code、Sublime Text,都可以。
  2. 2. 输入一个左花括号 {,表示一个对象的开始。
  3. 3. 写下第一个信息,比如 "name": "李四",后面加个逗号。
  4. 4. 继续补充,比如 "age": 25(注意数字不用引号),"isStudent": true(布尔值也不用引号),每条后面都要加逗号。
  5. 5. 想展示“列表”怎么写?比如 "courses": ["编程", "英语", "历史"],用方括号括起来,里面是字符串,逗号分隔。
  6. 6. 想展示更复杂的内容,比如“地址”,可以写成嵌套对象:"address": {"city": "北京", "street": "长安街"}。
  7. 7. 检查一下:所有的键和字符串值都要用双引号,元素之间用逗号,最后一个元素后面不能有逗号。
  8. 8. 结束时,写一个右花括号 }。
  9. 9. 保存文件,扩展名用 .json,比如 my-card.json。

这样,一份属于你的 JSON 信息卡就完成了。

10.3. 最终成品

一个格式正确的 my-card.json 文件看起来会是这样

{  
  "name": "李四",  
  "age": 25,  
  "isStudent": true,  
  "courses": [  
    "编程",  
    "英语",  
    "历史"  
  ],  
  "address": {  
    "city": "北京",  
    "street": "长安街"  
  }  
}

第十一章:修改和校验你的 JSON

11.1. 怎么改数据?

要修改 JSON 文件,其实很简单。

用文本编辑器打开,直接找到你想改的内容,比如把年龄从 25 改成 26。

或者给 courses 这个数组加一门新课,比如 "健身"。

保存就行了。

11.2. 为什么一定要验证?

JSON 格式很严格。

一个逗号多了、少了,或者引号写错,整个文件就“炸”了。

所以,每次改完,最好都要验证一下。

11.3. 在线验证怎么用?

比如用 JSONLint 或 JSON Formatter。

  1. 1. 先打开它们的网页。
  2. 2. 把你写好的 JSON 全部复制粘贴到网站的编辑框里。
  3. 3. 点一下“Validate”或“校验”按钮。
  4. 4. 如果没问题,页面会提示你格式正确。
  5. 5. 你可以故意多加一个逗号,试试再点校验。
  6. 6. 这时工具会高亮出错的地方,还会告诉你哪一行出错。

这样,查错和修正就特别方便了。

第十二章:新手必备的 JSON 工具箱

这里推荐几种简单实用的工具,能大大提升你学习和操作 JSON 的效率。

1. 在线校验和格式化工具

  • • JSONLint
  • • JSON Formatter
  • • JSON Checker

这些网站可以帮你检查语法、自动排版,让乱七八糟的 JSON 一秒变清爽。

出错会高亮提示,哪里有问题一目了然。

2. 代码编辑器

Visual Studio Code(VS Code)

强烈推荐。

VS Code 对 JSON 支持非常好。

输入时就能自动补全、语法高亮、实时校验。

出错会立刻提醒,大大减少调试时间。

3. 移动端编辑器

Json Genie(安卓)

如果你需要在手机上看或改 JSON,这类 App 用起来很方便。

4. 特殊场景工具

SJE Simple JSON Editor(WordPress 插件)

如果你在 WordPress 后台要直接编辑主题配置文件,这类专用插件可以让操作更简单。

这些工具都很容易上手。

新手用它们能少踩很多坑。

第五部分:进阶应用——解决实际问题

最后,我们来看看更复杂、更贴近真实工作的场景。

这些内容能帮你用 JSON 解决实际问题,同时也了解它的局限。

第十三章:如何应对复杂的嵌套 JSON

13.1. 什么叫“嵌套”?

嵌套,就是一个键的值还是一个对象,或者是一个数组。

通过嵌套,你可以描述很复杂的数据结构。

比如,要描述一个超级英雄团队:

最外层是团队的信息,比如名字、基地。

有一个 "members" 键,值是一个数组。

数组里每个元素是一个英雄对象。

每个英雄里还有 "powers" 这个键,值又是一个超能力的数组。

这样一层一层嵌套下去,就能表达各种复杂关系。

13.2. 实战:在 PostgreSQL 里查询嵌套 JSON

现在的数据库,不只是能存表格数据,也能直接存 JSON。

以 PostgreSQL 为例。

它有专门的 jsonb 类型,能高效存储和检索 JSON。

你可以用一些特别的符号来查数据:

  • • 用 -> 可以获取对象里某个键的值,返回还是 JSON。
  • • 用 ->> 则直接拿到文本值,比如用户名。
  • • 用 #> 可以一步到位,直接取多层嵌套里的内容。

比如,你可以写查询,找出所有住在“北京”的用户,或者提取每个人的第一门课程。

第十四章:数据格式的互相转换

14.1. Excel/CSV 转 JSON

很多时候,你有一份 Excel 或 CSV 表格,想把它导入到 Web 应用里。

这时就需要把表格数据转成 JSON。

比如,一个产品列表的 CSV,可以变成一个 JSON 数组,每个产品是一个对象。

用 Python 的 pandas 库,可以轻松搞定:

先读取 CSV 文件,再导出成 JSON 格式。

14.2. JSON 转 Excel/CSV

有时你拿到一堆 JSON 数据,但分析师更习惯用 Excel。

怎么把 JSON 变成表格?

最简单的方法,是用 Excel 自带的 Power Query 功能。

具体做法:

  1. 1. 打开 Excel,点“数据” -> “获取数据” -> “从文件” -> “从 JSON”。
  2. 2. 选中你的 JSON 文件,Power Query 编辑器会自动打开。
  3. 3. 如果你的 JSON 是一组对象列表,Power Query 会自动识别并展开成表格。

这样,复杂的数据就能在表格里一目了然。

无论是数据嵌套,还是格式转换,只要理解了 JSON 的结构,工具和方法其实都不难上手。

附录:JSON 小白进阶补充

1. JSON 和前端框架的关系

现在的前端开发,离不开 JSON。

React、Vue 这些流行框架,很多配置和数据都用 JSON 表达。

比如组件的属性、页面的路由、甚至整个页面的数据结构。

理解 JSON,能让你更快看懂和上手这些框架。

2. API 调试工具:Postman 和 Insomnia

做接口开发或测试时,经常要用 Postman、Insomnia 这类工具。

它们用来模拟请求、查看返回数据,大多数数据格式就是 JSON。

学会用这些工具,可以让你轻松调试和分析各种接口。

3. JSON 与本地存储

网页开发里,localStorage 和 sessionStorage 是常用的本地存储方式。

但它们只能存字符串。

所以,开发者通常会用 JSON.stringify() 把对象转成字符串存进去。

取出来时,再用 JSON.parse() 还原成对象。

这个过程很常见,理解后实际开发会顺畅很多。

4. JSON 的安全小贴士

写代码时,不要直接把用户输入拼进 JSON。

这样容易被攻击。

一定要用标准的序列化方法,比如 JSON.stringify(),这样更安全。

5. JSON、YAML、TOML 区别简述

除了 JSON,开发中还会遇到 YAML、TOML 等格式。

它们也能做配置,但语法更“人性化”,比如 YAML 支持缩进,TOML 更适合简单配置。

JSON 更严格,适合机器读写。

遇到不同格式,知道大致区别就行。

后记

AI搜索调研,人机协作编辑这篇文章。

是因为我在实际项目里,越来越频繁地遇到 JSON。

不管是自动化工具 n8n,还是 AI 开发、接口调试、配置文件,甚至数据库和前端框架,到处都有它的身影。

一开始,我也只是会“用”——复制粘贴,遇到报错就一脸懵。

但当我真正静下心来,去了解它的原理、历史和设计哲学,才发现 JSON 其实是一种极致优雅的“数据语言”。

它的极简、开放、务实,背后藏着很多值得借鉴的思维方式。

希望这篇文章,能帮你把“用 JSON”变成“懂 JSON”。

以后再遇到相关的术语和场景,你能多一份底气,也能少踩一些坑。

如果你觉得这篇内容对你有帮助,欢迎转发给朋友、同事,或者收藏备用。

让更多人少走弯路,少被格式折磨,多一些对技术的掌控感。

我们下次再见。


 


首页 发现
看过 我的