一文读懂JSON:程序员都在用的数据“快递盒”
你有没有想过,手机里的外卖订单、社交软件的消息、购物APP的商品列表,这些数据是怎么在手机和服务器之间“跑”的?它们需要一个统一的“包装盒子”,才能让不同设备、不同编程语言都能看懂——JSON就是这个最流行的“快递盒”。今天咱们用大白话聊聊JSON,看完你也能轻松写一个!
一、JSON是什么?一句话说清
JSON的全称是“JavaScript对象表示法”(JavaScript Object Notation),但别被名字骗了——它不是JavaScript独有的,而是所有编程语言(Python、Java、PHP等)都能看懂的数据交换格式。就像英语是国际通用语言,JSON是数据的“国际通用语言”。
JSON 由道格拉斯・克罗克福德(Douglas Crockford) 主导设计和推广。他在 2001 年左右基于 JavaScript 的对象字面量语法提炼出这一数据交换格式,并于 2006 年推动其成为 IETF 标准(RFC 4627)。
核心特点:纯文本、体积小、易读易写,机器解析起来也特别快。
二、JSON的“打包规则”:键值对是核心
JSON的本质是键值对的集合,就像你整理行李时的“标签+物品”:标签(键)告诉别人这是什么,物品(值)就是具体内容。比如描述一个人的信息,用JSON写出来是这样的:
{
"name": "张三",
"age": 25,
"isStudent": false,
"hobbies": ["看电影", "打篮球", "敲代码"],
"address": {
"city": "北京",
"street": "中关村大街"
}
}
咱们拆解一下这个“行李清单”的规则:
-
键(key):必须用双引号包裹,比如"name"、“age”,相当于“行李标签”;key也可以用中文,只要同样用双引号包裹即可,比如"姓名"、“年龄”,例如
{"姓名": "张三", "年龄": 25}也是合法的JSON。不过通常为了方便程序将key解析为内部变量,一般不推荐使用中文等非拉丁字符作为key。 -
值(value):可以是这6种类型,相当于“具体物品”:
-
字符串(用双引号):比如"张三"、“北京”;
-
数字(不用引号):比如25、99.9,正负整数和浮点数都可以;
-
布尔值:只有true(是)或false(否),不用引号;
-
数组(用[]包裹):多个值的列表,比如[“看电影”, “打篮球”];
-
对象(用{}包裹):嵌套的键值对,比如address里又包含city和street;
-
null:表示“空值”,比如"girlfriend": null。
-
-
分隔符规则:键与值之间用冒号“:”连接,不同键值对之间用逗号“,”分隔,且最后一个键值对后不能加逗号(否则可能导致解析错误)。
三、实用案例:用JSON描述“外卖订单”
光说不练假把式,咱们来模拟一个外卖APP的订单数据,这就是服务器传给你手机的真实JSON格式:
{
"orderId": "Waimai20251010001",
"userId": 123456,
"orderTime": "2025-10-10 12:05:30",
"totalPrice": 45.5,
"isPaid": true,
"goods": [
{
"goodsName": "香辣鸡腿堡",
"price": 22,
"quantity": 1
},
{
"goodsName": "可乐(中杯)",
"price": 5,
"quantity": 2
}
],
"receiver": {
"name": "李四",
"phone": "13800138000",
"address": "海淀区XX小区3号楼2单元501"
}
}
你看,这个JSON包含了订单号、用户ID、下单时间、商品列表(数组)、收件人信息(对象),手机APP拿到这个“快递盒”后,就能解析出每一项数据,展示在你的屏幕上——是不是很直观?
四、为什么大家都爱用JSON?3个核心优势
1. 跨平台“无障碍沟通”
不管是前端的JavaScript、后端的Java/Python、移动端的iOS/Android,都能完美解析JSON。就像用英语交流,中国人、美国人、日本人都能听懂。
2. 体积小,传输快
对比另一种常见格式XML,JSON没有多余的标签,同样的数据用JSON包装,体积能小30%以上,手机刷外卖、刷视频时加载更快。
3. 人眼“友好型”格式
缩进清晰、结构简单,即使是新手也能快速看懂内容,不像某些二进制格式(比如protobuf),不开专门工具根本看不懂。
五、最后:动手试试写JSON吧!
其实JSON一点都不难,记住“键用双引号、值看类型、结构靠{}和[]”这三句话就行。你可以试着用JSON描述一下自己的“书架”:包含书名、作者、出版年份、价格、是否已读完,甚至可以加一个“推荐理由”数组。
以下内容供参考。
{
"bookshelf": [
{
"title": "活着",
"author": "余华",
"publishYear": 1993,
"price": 29.5,
"isFinished": true,
"re***mendationReasons": [
"文字朴实却充满力量",
"展现生命的韧性与意义",
"引发对人生的深刻思考"
]
},
{
"title": "三体",
"author": "刘慈欣",
"publishYear": 2008,
"price": 39.8,
"isFinished": true,
"re***mendationReasons": [
"科幻脑洞大开,构建宏大宇宙观",
"融合科学与哲学思考",
"中国科幻文学的里程碑之作"
]
},
{
"title": "长安的荔枝",
"author": "马伯庸",
"publishYear": 2022,
"price": 45,
"isFinished": false,
"re***mendationReasons": [
"以小见大,展现职场生存智慧",
"历史背景下的精彩故事",
"情节紧凑,可读性强"
]
}
]
}