Hello,我是小邢哥。
一、先说 “前世”:其实是被逼出来的解决方案
JSON(JavaScript Object Notation)能出现,根本不是凭空想出来的 —— 是早年互联网传数据时遇到麻烦,老格式实在不好用,才催生出来的。
打开今日头条查看图片详情
2000 年前后那阵儿,网上传数据基本全靠 XML。但用久了大家都觉得别扭:语法太啰嗦(一层套一层的标签),想读它还得装专门的工具(就是所谓的 DOM/SAX 解析器),而且同样的内容,XML 写出来文件特别大 —— 比后来的 JSON 能大出 30% 不止。
打开今日头条查看图片详情
就拿描述一个人来说,“张三,25 岁”,XML 得写成<user><name>张三</name><age>25</age></user>,光标签就占了一半地方,特别浪费空间。
刚好那时候 AJAX 技术开始火了 —— 简单说就是 “网页不用刷新,就能实时更内容”,比如刷电商评论、加载朋友圈,都靠这个。
打开今日头条查看图片详情
但 XML 又大又难解析,根本跟不上这种 “快节奏” 需求。
就在这时候,2001 年有个叫 Douglas Crockford 的程序员,盯着 JavaScript 里的 “对象写法”(比如{name: ‘张三’, age: 25})灵机一动:不如就用这种 “键值对 + 数组” 的结构传数据?又简单又好懂,这就是 JSON 最早的样子。
打开今日头条查看图片详情
后来 JSON 慢慢正规起来:2006 年,互联网工程任务组(IETF)出了份文档,第一次把 JSON 的语法规则、“身份标识”(就是 MIME 类型,电脑靠这个认 JSON 文件,叫 application/json)说清楚,还定了 “键名必须用双引号、不能写注释、末尾不能多逗号” 这些规矩。
到 2013 年,国际标准组织(ISO)又给它发了 “认证”(标准号 ISO/IEC 21778:2013),这一下 JSON 就不再是 “JavaScript 的小跟班” 了,成了所有编程语言都能用的通用格式。
国际标准组织(ISO)
二、到了今天:凭三个硬优势成了数据交换的 “香饽饽”
现在做开发的,几乎没人不用 JSON——2023 年 Stack Overflow 的开发者调查里就提到,差不多 97% 的 Web 开发者都把它当首选。
能这么火,全靠三个没法替代的优点,都是大家实际用出来的感受:
打开今日头条查看图片详情
1. 语法简单,还不占地方
JSON 就两种核心结构,记牢就行:
- 用{}包起来的 “对象”:其实就是一堆 “键:值” 对,比如{name: ‘张三’, age: 25},像给东西贴标签;
- 用[]包起来的 “数组”:就是一串有序的内容,比如[‘苹果’, ‘香蕉’, ‘橙子’],像列清单。
json语法格式
能表示的东西也简单:字符串(比如’张三’)、数字(比如 25)、true/false(是 / 否)、null(空值),再加上上面说的对象和数组,总共 6 种。而且规则很明确,比如键名必须用双引号(这点和 JavaScript 不一样,别搞混)、不能写注释(怕电脑解析时看错)。
这种简单设计,让它读起来特别快。之前 W3C 做过个测试,100KB 的数据(大概相当于几百条用户信息),JSON 解析只要 1 毫秒,XML 得要 2.3 毫秒 —— 快了一半还多。
打开今日头条查看图片详情
2. 跟老格式比,优势太明显了
- 比 XML 轻:同样的数据,JSON 写出来能小 30% 到 50%。比如要描述 “一个订单里有 2 个商品”,XML 得套 5 层标签,JSON 直接写{‘order’: {‘goods’: [{‘id’: 1, ‘name’: ‘手机’}, {‘id’: 2, ‘name’: ‘耳机’}]}},字少了近一半,传数据时省流量、加载还快。
打开今日头条查看图片详情

- 比 CSV 灵活:CSV 就是表格文件(像 Excel 另存的.csv),只能放 “扁平数据”,比如一行一个人、一列一个属性。但要是遇到 “订单里有多个商品” 这种 “嵌套情况”,CSV 就没辙了,得拆成 “订单表”“商品表” 两个文件;JSON 就不用,直接把商品列表嵌在订单里,一眼就能看明白。
打开今日头条查看图片详情
- 不管用什么语言,拿过来就能用:现在主流的编程语言(比如 Python、Java、Go、PHP),自带的工具里都有解析 JSON 的功能 ——Python 用json模块,Java 有org.json,JavaScript 更方便,直接用JSON.parse()就能读。不用额外装软件,新手学 10 分钟就能上手。
打开今日头条查看图片详情
3. 哪儿都能用,早成了行业习惯
现在 JSON 几乎渗透到互联网的每一个角落,举几个你可能没察觉但常用的例子:
- API 接口:不管是 GitHub 的接口、微信的开放平台(比如开发小程序调用的接口),还是公司内部的系统接口,90% 以上都用 JSON 返回数据。比如调用 GitHub 查用户,返回的就是{‘login’: ‘octocat’, ‘id’: 583231, …},开发者拿过来就能直接用。
打开今日头条查看图片详情
- 配置文件:做前端的都知道,npm 的package.json(管理项目依赖的文件)、VS Code 的配置文件,都是 JSON 格式;就连 Docker Compose(管理容器的工具),虽然默认用 YAML,但 YAML 是 JSON 的 “升级版”(能兼容 JSON,还支持更多写法)。选 JSON 是因为它比 INI 格式(老系统常用的配置格式)能放复杂内容,又不像 YAML 那样 “差个缩进就报错”,不容易出问题。
打开今日头条查看图片详情
- 前后端传数据:现在用 React、Vue 这些框架做的网页(比如你刷的电商网站、短视频 APP 网页版),前端和后端传数据基本都用 JSON,靠 Axios、Fetch 这些工具就能搞定。在普通网络环境下,1MB 的 JSON 数据(大概几千条商品信息),传完再解析,总共也就 5 毫秒左右,刷商品列表、加载评论这些实时操作,完全跟得上。
打开今日头条查看图片详情
- 存点小数据:手机网页的 “本地存储”(比如记住你的登录状态)、微信小程序的缓存、甚至软件的日志文件,都常用 JSON 存东西。不用开数据库(像 MySQL 那种),直接读文件、写文件就行,适合存 “不大但常用” 的数据。
三、后来的 “升级款”:解决 JSON 天生的小毛病
用得久了,大家也发现 JSON 有缺点:语法太死板(不能写注释、键名必须用双引号)、没法提前检查数据对不对。
于是就有了几个常用的 “扩展版”,专门补这些短板:
- JSON5:2012 年开始出现,跟 JSON 能兼容,但多了不少方便的功能 —— 能写注释(比如// 这是用户姓名,以后看文件就知道每个字段是啥)、键名能用单引号、末尾能多逗号(改代码时删最后一行不用删逗号,省事)、字符串能换行。之前 JSON 写配置文件没法加注释,维护时经常忘字段含义,现在用 JSON5 就解决了,像tsconfig.json5(TypeScript 的配置文件),很多前端项目都在用。
打开今日头条查看图片详情
- JSON Schema:2019 年定了标准,其实就是 “给 JSON 定规矩的文件”。比如你想让用户数据里 “必须有姓名(还得是文字)、年龄(得是大于 18 的数字)”,就用 JSON Schema 写个规则,提前检查数据对不对 —— 避免后端收到 “年龄是文字” 这种错数据,还得返工改。现在 Swagger(做 API 文档的工具),都靠它来写接口参数说明,比如告诉开发者 “这个字段必须传数字”。
打开今日头条查看图片详情
- GeoJSON:专门用来描述地理数据的。比如想表示北京的位置,就写{‘type’: ‘Point’, ‘coordinates’: [116.40, 39.90]}(前面是经度,后面是纬度),OpenStreetMap、高德地图的 API 都用它传地理信息,不用自己写复杂的格式,特别直观。
- BSON:简单说就是 “二进制的 JSON”,MongoDB 数据库(常用的非关系型数据库)就是用它存数据的。JSON 没法存二进制内容(比如图片、视频片段),BSON 专门加了个BinData类型,刚好解决这个问题 —— 既能像 JSON 一样保持结构化(比如存 “用户信息 + 头像二进制数据”),又能存大数据,很适合做数据库存储。
打开今日头条查看图片详情
四、以后会怎么样:跟着新技术接着变
虽然 JSON 已经是行业标准了,但也没停下进化的脚步,以后会更贴合新场景,同时解决自己的小问题:
1. 会用到更多新地方
- 低代码平台:现在很多 “不用写代码或少写代码” 的工具(比如拖拽做表单、画工作流程的平台),背后其实都是用 JSON 存配置 —— 因为它结构清楚,你拖出来的界面,能直接转成 JSON,再变成能运行的内容,不用重新写逻辑。
打开今日头条查看图片详情
- 边缘设备:像物联网传感器(比如家里的温湿度传感器)、智能手表这些设备,内存小、算力有限,JSON 解析起来不用复杂工具,刚好适合它们跟云端传数据(比如传感器传温湿度到手机 APP),不占设备资源。
- AI 和大数据:现在做 AI 标注(比如给图片打 “猫”“狗” 标签,还要标准确率),用 JSON 比 CSV 方便 —— 能直接把 “图片地址 + 标签 + 准确率” 嵌套着写,不用拆成 “图片表”“标签表” 好几个文件。以后会有更多 AI 场景用 JSON 代替 CSV,省得处理多文件的麻烦。
打开今日头条查看图片详情
2. 遇到问题也有办法解决
- 没法校验数据类型:比如有时候前端不小心把 “年龄 25” 写成文字 “25”,后端收到就容易出错。现在越来越多公司用 JSON Schema 提前检查,2024 年的 API 行业报告里说,80% 的企业级 API 都开始用它了,能少走很多弯路。
打开今日头条查看图片详情
- 大文件解析占内存:要是解析 1GB 以上的 JSON 文件(比如存了几百万条用户数据),按老办法 “全读进内存再解析”,电脑肯定卡。现在有 “流式解析” 的工具(比如 Python 的ijson、Java 的Jackson Streaming),读一点解析一点,不用把整个文件放进内存,内存能省 90% 以上,大文件也能轻松处理。
打开今日头条查看图片详情
- 语法太死板:写配置文件的时候,不能加注释、键名必须用双引号,特别不方便。现在很多前端项目开始用 JSON5,2024 年 npm 的统计显示,30% 的项目已经把配置文件从 JSON 换成 JSON5 了,改配置时省心多了。
五、最后说句实在的:JSON 能火,关键是 “好用”
这 20 多年,JSON 从 “JavaScript 的小配角” 变成 “全球都用的数据格式”,不是因为技术多复杂,而是它刚好解决了大家传数据时最关心的三个问题:
打开今日头条查看图片详情
- 省事儿:结构简单,不用学复杂语法,新手也能快速上手;
- 省钱:文件小,传数据时省流量(尤其对手机用户来说,省流量就是省话费);
- 通用:不管用 Python 还是 Java,拿过来就能用,不用专门转格式。
这种 “怎么方便怎么来” 的设计,让它在 XML、CSV 这些老格式里脱颖而出。
以后只要还需要在电脑、手机、设备之间传数据,JSON 肯定还会一直用下去。