JSON格式是什么样子?一文带你轻松看懂“数据交换的语言”
初识JSON:不止是“数据交换的语言”
提到JSON,你可能听过它是“轻量级的数据交换格式”,但具体长什么样?别急,我们先用一个生活化的例子感受一下:假设你要描述一位同学的信息,用JSON写出来可能是这样:
{
"name": "张三",
"age": 18,
"isStudent": true,
"courses": ["数学", "英语", "物理"],
"address": {
"city": "北京",
"district": "海淀区"
}
}
这段“代码”就是JSON格式,它看起来像“字典”或“包裹”,用清晰的键值对、列表和嵌套结构,把复杂信息“打包”得整整齐齐——无论是网页前端请求数据、APP传输信息,还是配置文件存储参数,JSON都是最常见的“数据语言”之一。
JSON格式的“骨架”:5种核心数据类型
JSON的“长相”其实有严格规则,主要由5种基本数据类型和2种结构组成,我们一个个拆解:
字符串(String):用双引号括起来的文本
字符串是JSON中最常见的“信息载体”,必须是双引号(不能用单引号)括起来,
"name": "张三", # 姓名 "school": "清华大学" # 学校
注意:如果字符串本身包含双引号,需要用反斜杠\转义,"desc": "他说:\"今天天气真好\""。
数值(Number):整数、小数都行
数值不用加引号,可以是整数(18)、小数(14),也可以是科学计数法(5e3),但不能用八进制、十六进制(如012、0x1a),
"age": 18, "score": 95.5, "height": 1.75
布尔值(Boolean):只有“真”和“假”
布尔值非常简单,只有两个值:true(真)和false(假),全部小写,不能加引号,
"isStudent": true, "hasGraduated": false
null:表示“空”或“无”
当某个字段没有值时,用null表示(同样小写,无引号),
"phoneNumber": null # 暂无电话号码
数组(Array):有序的“列表”
数组是一组按顺序排列的值,放在方括号[]里,值之间用逗号分隔,值可以是任意JSON数据类型(字符串、数值、布尔值,甚至嵌套数组或对象),
"courses": ["数学", "英语", "物理"], # 字符串数组 "scores": [90, 88, 95], # 数值数组 "hobbies": [ "reading", null, true ] # 混合类型数组
JSON的“结构”:对象与数组的嵌套
JSON最强大的地方,在于能通过对象和数组嵌套,表达复杂的数据关系。
对象(Object):键值对的“集合”
对象是JSON的“核心容器”,用花括号括起来,内部由“键值对”组成:每个键(key)必须是字符串(双引号括起来),值(value)可以是任意JSON数据类型,键值对之间用逗号分隔,
{
"name": "张三", # 键:"name",值:"张三"(字符串)
"age": 18, # 键:"age",值:18(数值)
"isStudent": true # 键:"isStudent",值:true(布尔值)
}
注意:对象中的键必须是唯一的,不能重复(就像字典里的“词条”不能重复)。
嵌套:对象里套对象,数组里套对象
实际数据往往更复杂,地址”需要包含省、市、区,“学生信息”可能需要嵌套“课程列表”,这时就用到了嵌套:
-
对象嵌套对象:
"address": { "province": "北京市", "city": "北京", "district": "海淀区" } -
数组嵌套对象:比如描述多个学生:
[ { "name": "张三", "age": 18 }, { "name": "李四", "age": 19 } ] -
对象嵌套数组:比如一个学生有多个课程:
"courses": [ {"name": "数学", "credit": 4}, {"name": "英语", "credit": 3} ]
JSON格式的“规则清单”:写对JSON的3个要点
想让JSON被机器正确读取,必须遵守以下规则(“语法铁律”):
-
最外层只能是对象或数组:
一个有效的JSON,要么是一个对象(),要么是一个数组([...]),不能是单独的字符串、数值等。"hello"不是JSON,["hello"]才是JSON。 -
键必须用双引号,值类型要匹配:
- 键必须是字符串,且必须用双引号(
{"name": "张三"}正确,{name: "张三"}错误); - 值的类型要符合JSON规范(不能用函数、日期等特殊类型,日期需用字符串表示,如
"birthday": "2005-08-10")。
- 键必须是字符串,且必须用双引号(
-
逗号不能“画蛇添足”:
对象或数组中,最后一个键值对/元素后面不能加逗号。{"name": "张三", "age": 18,}错误(最后一个18后面多了逗号),正确写法是去掉末尾逗号。
JSON长什么样子?综合案例看这里
我们通过一个完整的“学生信息”案例,把上面的知识点串起来,看看真实的JSON格式:
{
"id": 1001,
"name": "张三",
"age": 18,
"gender": "男",
"isStudent": true,
"courses": [
{"subject": "数学", "score": 90, "credit": 4},
{"subject": "英语", "score": 88, "credit": 3},
{"subject": "物理", "score": 95, "credit": 4}
],
"contact": {
"email": "zhangsan@example.com",
"phone": null,
"address": {
"province": "北京市",
"city": "北京",
"detail": "海淀区中关村大街1号"
}
},
"graduated": false
}
这个案例包含了:
- 对象(最外层学生信息)、
- 数组(
courses是课程列表)、 - 嵌套对象(
contact和address)、 - 多种数据类型(数值
1001、字符串"张三"、布尔值true、null)——这就是JSON的“标准长相”。
JSON格式的核心特点
简单说,JSON格式就像“用机器能看懂的‘清单’”:
- 清晰:键值对、数组、嵌套结构,数据一目了然;
- 轻量:没有冗余标签(比如XML的
<student></student>),数据密度高; - 通用:几乎所有编程语言(Python、JavaScript、Java等)都能轻松解析,是前后端数据交换的“通用语言”。
下次遇到JSON,你就能一眼认出:哦,这是用花括号和方括号[]搭起来的“数据积木”,里面装着字符串、数值、布尔值和它们的“组合体”!



还没有评论,来说两句吧...