JSON格式详解:从基础结构到实际应用
JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其易于人阅读和编写、也易于机器解析和生成,成为现代软件开发中数据存储与传输的主流格式之一,无论是Web API的响应、配置文件,还是跨语言数据交互,JSON都扮演着重要角色,JSON的格式究竟是什么样子?本文将从基础结构、语法规则、常见类型及实际示例出发,带你全面理解JSON的样貌。
JSON的核心基础:两种基本结构
JSON的数据组织围绕两种核心结构展开:对象(Object)和数组(Array),所有JSON数据都是由这两种结构嵌套组合而成的。
对象(Object):键值对的集合
对象在JSON中用一对花括号 表示,内部由无序的键值对(Key-Value Pair)组成,键值对之间用逗号 分隔。
- 键(Key):必须是字符串,必须用双引号 包围(不能用单引号),不能重复。
- 值(Value):可以是多种数据类型(见下文“数据类型”部分)。
格式示例:
{
"name": "张三",
"age": 25,
"isStudent": false,
"address": {
"city": "北京",
"district": "海淀区"
}
}
这里,"name"、"age" 等是键,"张三"、25 等是对应的值。"address" 的值又是一个对象,体现了JSON的嵌套特性。
数组(Array):有序的值列表
数组在JSON中用一对方括号 [] 表示,内部由有序的值列表组成,值之间用逗号 分隔,值可以是任意JSON数据类型(包括对象或数组)。
格式示例:
[ "苹果", "香蕉", "橙子" ]
数组的值也可以是对象,例如存储多个用户信息:
[
{
"id": 1,
"name": "李四",
"hobbies": ["阅读", "游泳"]
},
{
"id": 2,
"name": "王五",
"hobbies": ["篮球", "游戏"]
}
]
JSON的5种基本数据类型
JSON中的值(Value)可以是以下5种基本类型,也可以是对象或数组(即“复合类型”):
字符串(String)
- 格式:用双引号 包围的字符序列,不能使用单引号()。
- 支持:可以包含Unicode字符(如中文)、转义字符(如
\n换行、\"双引号、\\反斜杠等)。 - 示例:
"Hello, World!" "JSON支持中文:你好" "转义字符示例:\"换行符\"\n"
数值(Number)
- 格式:不区分整数和浮点数,可直接表示,不支持八进制和十六进制(必须以十进制形式)。
- 规则:
- 可包含正负号(如
-123、+3.14, 可省略); - 支持科学计数法(如
5e3表示1500); - 不能使用
NaN或Infinity(需用字符串表示)。
- 可包含正负号(如
- 示例:
42 -3.14 1.23e-5
布尔值(Boolean)
- 格式:仅两个固定值,全部小写:
true(真)和false(假)。 - 注意:必须是全小写,
True或FALSE等都是错误的。 - 示例:
"isActive": true, "isDeleted": false
空值(Null)
- 格式:仅有一个值
null,表示“空”或“无值”。 - 注意:
null全部小写,不同于 (空字符串)或0(数值0)。 - 示例:
"middleName": null
复合类型:对象与数组
如前所述,对象和数组可以作为值嵌套在其他结构中,这是JSON灵活性的核心。
{
"userInfo": {
"name": "赵六",
"scores": [90, 85, 78]
}
}
JSON的语法规则“红线”
要写出正确的JSON格式,必须遵守以下关键规则,否则会导致解析失败:
-
键必须用双引号:对象的键必须是字符串且用双引号包围,单引号或无引号均非法。
- ✅
"name": "张三" - ❌
name: "张三"(无引号)❌'name': "张三"(单引号)
- ✅
-
值的数据类型必须规范:
- 字符串必须双引号,布尔值必须是
true/false(全小写),null必须全小写。 - 数值不能有前导零(如
0123非法,除非是x形式的小数)。
- 字符串必须双引号,布尔值必须是
-
逗号的使用:
- 对象的最后一个键值对、数组的最后一个元素后不能有逗号(这是常见错误)。
- ✅
"name": "张三", "age": 25 - ❌
"name": "张三", "age": 25,(末尾逗号)
-
嵌套结构清晰:对象和数组可以多层嵌套,但必须确保花括号 和方括号
[]成对匹配,避免括号不闭合。 -
注释不支持:JSON标准本身不支持注释(如 或 ),部分解析器可能扩展支持,但为保证兼容性,注释需通过其他方式(如在外部文档中说明)。
JSON的“样子”:完整示例
通过一个实际场景,我们可以更直观地看到JSON的完整格式,一个电商订单的JSON数据可能如下:
{
"orderId": "ORD20231028001",
"orderDate": "2023-10-28T14:30:00Z",
"customer": {
"id": 1001,
"name": "陈七",
"email": "chenqi@example.com",
"isVIP": true
},
"items": [
{
"productId": "P1001",
"productName": "无线耳机",
"quantity": 1,
"price": 299.00
},
{
"productId": "P1002",
"productName": "手机壳",
"quantity": 2,
"price": 49.50
}
],
"totalAmount": 398.00,
"notes": null,
"isShipped": false
}
这个示例包含了对象嵌套(customer 对象)、数组嵌套(items 数组)、多种数据类型(字符串、数值、布尔值、空值),完整展现了JSON的层次结构和语法规范。
JSON格式的核心特征
- 简洁轻量:相比XML,JSON更短小,解析效率更高。
- 结构清晰:通过对象和数组实现数据的层次化组织,易于理解。
- 语言无关:虽然源自JavaScript,但几乎所有编程语言都支持JSON的解析和生成(如Python的
json库、Java的Gson等)。 - 严格规范:语法规则明确,避免了歧义,确保数据在不同系统间准确传递。
JSON的格式,就是了数据交互的“通用语言”,无论是开发API、配置应用,还是处理数据存储,理解JSON的结构和语法,都能让你在数据处理中更加得心应手。



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