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