一、JSON 是什么?
JSON(JavaScript Object Notation) 是一种 轻量级的数据交换格式,采用键值对(Key-Value)结构描述数据。它与编程语言无关,常用于前后端数据传输、API接口设计以及配置文件存储。
- 设计初衷:替代 XML,简化数据交换流程。
- 核心特点:
- 格式简洁,易读易写。
- 兼容多语言(Java、Python、C#等)。
- 占用网络带宽小(相比 XML),传输效率高。
二、JSON 的组成结构
JSON 数据由以下两种基础结构组成:
-
对象(Object)
- 用
{}
包裹,表示无序的键值对集合。 - 键(Key):字符串(必须用双引号包裹)。
- 值(Value):可以是字符串、数字、布尔值、数组、对象或
null
。 - 示例:
json">{"name": "张三","age": 25,"isStudent": false,"address": {"city": "北京","country": "中国"} }
- 用
-
数组(Array)
- 用
[]
包裹,表示有序的值集合(元素之间用逗号分隔)。 - 示例:
json">[{"id": 1, "product": "手机"},{"id": 2, "product": "电脑"} ]
- 用
三、JSON 语法规则
-
必须遵循:
- 键名必须用 双引号 包裹(单引号非法)。
- 值可以是
string
、number
、boolean
、array
、object
、null
。 - 最后一个元素后不能有逗号(否则语法错误)。
-
典型错误示例:
json">{"name": "李四", // ✅ 正确'age': 30, // ❌ 错误:键必须用双引号"hobbies": ["篮球", "音乐", ], // ❌ 错误:末尾逗号 }
-
注释:
- JSON 标准不支持注释,但某些工具(如 JSONC)允许用
//
或/* */
注释。
- JSON 标准不支持注释,但某些工具(如 JSONC)允许用
四、JSON 与 XML 的对比
对比项 | JSON | XML |
---|---|---|
体积大小 | 更小,无冗余标签 | 较大(标签重复) |
可读性 | 高(结构类似代码对象) | 较低(标签嵌套复杂化) |
解析速度 | 更快(数据结构简单) | 较慢(需解析复杂标签树) |
适用场景 | API 接口、移动端应用 | 配置文件、老旧系统交互 |
五、JSON 的实际应用场景
-
前后端数据交互
- 前端发送请求参数:
json">{"username": "user123","password": "******" }
- 后端响应返回结果:
json">{"code": 200,"data": {"userId": 123, "token": "abcxyz"} }
- 前端发送请求参数:
-
接口测试中的常见用法
- JMeter 的 HTTP Sampler 中,使用 JSON 作为请求体:
json">{"method": "POST","url": "/api/login","headers": {"Content-Type": "application/json"},"body": {"user": "test","pwd": "123456"} }
- Postman 中直接编写 JSON 请求体测试接口:
json-raw.jpg&pos_id=img-GHCITirq-1742207047138" alt="外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传" />
- JMeter 的 HTTP Sampler 中,使用 JSON 作为请求体:
-
配置文件
- 项目中的数据库配置(如
config.json
):json">{"database": {"host": "localhost","port": 3306,"user": "root","password": "root"} }
- 项目中的数据库配置(如
六、如何操作 JSON 数据?
-
编写 JSON
- 直接在文本编辑器或 IDE(如 VSCode、IntelliJ)中编写。
- 必备工具:JSON 在线校验工具(如 JSONLint)。
-
解析 JSON
-
测试工具中的 JSON 处理
-
JMeter:
- 通过 JSON Extractor 提取响应中的字段:
JSON Path 表达式:json">"response": {"data": {"userId": 123} }
$.data.userId
→ 提取值123
。 - 使用 JSON 断言 验证响应中的值:检查
code: 200
。
- 通过 JSON Extractor 提取响应中的字段:
-
Postman:
- 在 Tests 标签页用 JavaScript 解析 JSON 响应:
let response = pm.response.json(); pm.test("Check user ID", () => pm.expect(response.data.userId).to.eql(123));
- 在 Tests 标签页用 JavaScript 解析 JSON 响应:
-
七、JSON 的注意事项
-
严格语法校验
- 键必须用双引号,大小写敏感(
{"Name": "Tom"}
与{"name": "Tom"}
不同)。 - 数字无需引号,但字符串必须加引号:
"age": 25
(正确) vs"age": "25"
(字符串类型)。
- 键必须用双引号,大小写敏感(
-
常见错误场景
- JSON 解析失败:因语法错误(如逗号或引号缺失)导致接口返回
500
错误。 - 数据类型混淆:前端期望数值类型
100
,但接口返回字符串"100"
。
- JSON 解析失败:因语法错误(如逗号或引号缺失)导致接口返回
总结
- 什么是 JSON?
- 轻量级、易读的键值对数据格式,用于跨平台数据交换。
- 核心规则:
- 对象用
{}
,数组用[]
,键名必须双引号,严格语法校验。
- 对象用
- 测试中的应用:
- API 请求/响应体、数据断言提取、配置文件存储。
最终目标:熟练掌握 JSON 结构,在接口测试中高效构建和解析数据,确保测试准确性。