📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)
📝 职场经验干货:
1. JSONPath 的核心概念
JSONPath 是一种查询语言,用于从 JSON 数据中提取特定的字段或值。它的表达式语法类似于 XPath,支持多种操作符和函数,能够快速定位和提取数据。
2. JSONPath 的基本语法
2.1 提取单个字段
语法:$..
示例:
{
"store": {
"book": [
{ "title": "Sword of Honour", "price": 12.99 },
{ "title": "Moby Dick", "price": 8.99 }
]
}
}
提取书名:$.store.book[0].title。
2.2 提取数组中的所有元素
语法:$..[*]
示例:
提取所有书名:$.store.book[*].title。
2.3 过滤条件
语法:$..[?(@.)]
示例:
提取价格大于 10 的书名:$.store.book[?(@.price > 10)].title。
2.4 递归查询
语法:$..
示例:
查询所有层级中的 name 字段:$..name。
3. JSONPath 的应用场景
3.1 提取指定字段
场景:从学生信息中提取名字和数学成绩。
JSON 数据:
{
"student": {
"name": "John Doe",
"scores": {
"math": 85,
"english": 90
}
}
}
JSONPath 表达式:
提取名字:$.student.name
提取数学成绩:$.student.scores.math。
3.2 提取数组中的元素
场景:从多个学生信息中提取所有数学成绩。
JSON 数据:
{
"students": [
{ "name": "John Doe", "scores": { "math": 85 } },
{ "name": "Jane Smith", "scores": { "math": 92 } }
]
}
JSONPath 表达式:
提取所有数学成绩:$.students[*].scores.math。
3.3 提取嵌套数组中的特定元素
场景:从订单信息中提取价格大于 50 的商品名称。
JSON 数据:
{
"orders": [
{ "items": [ { "name": "item1", "price": 45 }, { "name": "item2", "price": 55 } ] },
{ "items": [ { "name": "item3", "price": 60 } ] }
]
}
JSONPath 表达式:
提取价格大于 50 的商品名称:$.orders[*].items[?(@.price > 50)].name。
3.4 提取嵌套对象中的某些属性
场景:从图书信息中提取书名和出版年份。
JSON 数据:
{
"library": {
"books": [
{ "title": "Book A", "year": 2020 },
{ "title": "Book B", "year": 2019 }
]
}
}
JSONPath 表达式:
提取书名和出版年份:$.library.books[*]['title', 'year']。
4. JSONPath 在接口测试中的应用
4.1 提取接口响应中的数据
示例:从登录接口的响应中提取 Token。
{
"status": "success",
"data": {
"token": "abc123"
}
}
JSONPath 表达式:
提取 Token:$.data.token。
4.2 验证接口响应
示例:验证用户信息接口返回的用户名是否正确。
{
"profile": {
"name": "admin",
"email": "admin@example.com"
}
}
JSONPath 表达式:
提取用户名:$.profile.name。
5. JSONPath 的工具支持
Python:使用 jsonpath-ng 或 jsonpath 库。
import jsonpath
data = {"store": {"book": [{"title": "Sword of Honour"}]}}
result = jsonpath.jsonpath(data, "$.store.book[*].title")
print(result) # ['Sword of Honour']
Java:使用 com.jayway.jsonpath 库。
import com.jayway.jsonpath.JsonPath;
String json = "{...}";
Object result = JsonPath.read(json, "$.store.book[*].title");
System.out.println(result);
JavaScript:使用 jsonpath-plus。
const jsonpath = require('jsonpath-plus');
const data = { store: { book: [{ title: "Sword of Honour" }] } };
const result = jsonpath({ path: '$.store.book[*].title', json: data });
console.log(result); // ['Sword of Honour']
6. 总结
JSONPath 是一种强大的工具,能够快速从复杂的 JSON 数据中提取所需信息。它在接口自动化测试中具有广泛的应用,例如提取接口响应中的关键数据、验证接口返回值是否符合预期等。通过掌握 JSONPath 的基本语法和应用场景,你可以更高效地处理 JSON 数据,提升接口测试的效率和准确性。
最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】