目录
- 多层嵌套响应介绍
- JSONPath 语法
- JSONPath 使用
多层嵌套结构
// - 层级多。
// - 嵌套关系复杂。
{
"errcode": 0,
"errmsg": "ok",
"userid": "zhangsan",
"name": "张三",
"department": [1, 2],
"order": [1, 2],
"position": "后台工程师",
"mobile": "13800000000",
"gender": "1",
"email": "zhangsan@gzdev.com",
"biz_mail": "zhangsan@qyycs2.wecom.work",
"is_leader_in_dept": [1, 0],
"direct_leader": ["lisi", "wangwu"],
"avatar": "http://wx.qlogo.cn/mmopen/ajNVdqHZLLA3WJ6DSZUfiakYe37PKnQhBIeOQBO4czqrnZDS79FH5Wm5m4X69TBicnHFlhiafvDwklOpZeXYQQ2icg/0",
"thumb_avatar": "http://wx.qlogo.cn/mmopen/ajNVdqHZLLA3WJ6DSZUfiakYe37PKnQhBIeOQBO4czqrnZDS79FH5Wm5m4X69TBicnHFlhiafvDwklOpZeXYQQ2icg/100",
"telephone": "020-123456",
"alias": "jackzhang",
"address": "广州市海珠区新港中路",
"open_userid": "xxxxxx",
"main_department": 1,
"extattr": {
"attrs": [
{
"type": 0,
"name": "文本名称",
"text": {
"value": "文本"
}
},
{
"type": 1,
"name": "网页名称",
"web": {
"url": "http://www.test.com",
"title": "标题"
}
}
]
},
"status": 1,
"qr_code": "https://open.work.weixin.qq.com/wwopen/userQRCode?vcode=xxx",
"external_position": "产品经理",
"external_profile": {
"external_corp_name": "企业简称",
"wechat_channels": {
"nickname": "视频号名称",
"status": 1
},
"external_attr": [
{
"type": 0,
"name": "文本名称",
"text": {
"value": "文本"
}
},
{
"type": 1,
"name": "网页名称",
"web": {
"url": "http://www.test.com",
"title": "标题"
}
},
{
"type": 2,
"name": "测试app",
"miniprogram": {
"appid": "wx8bd80126147dFAKE",
"pagepath": "/index",
"title": "my miniprogram"
}
}
]
}
}
## JSONPath 如何使用 语法知识。 第三方库调用。
maven依赖:
<properties>
<json-path.version>2.8.0</json-path.version>
</properties>
<!-- json path 解析json文件 -->
<dependency>
<groupId>com.jayway.jsonpath</groupId>
<artifactId>json-path</artifactId>
<version>${json-path.version}</version>
</dependency>
具体实例:
public class JsonpathTest {
@Test
void jsonpathRead(){
String jsonData = "{\"username\":\"hogwarts\",\"password\":\test12345\",\"code\":\"\"}";
//提取响应体信息
String resBody = given()
.body(jsonData)
.when()
.post("https://httpbin.hogwarts.ceshiren.com/post")
.then()
.log().all()
//获取响应体信息
.extract().response().getBody()
//转换成Sting格式
.asString();
System.out.println(resBody);
String data = JsonPath.read(resBody,"$.data");
System.out.println(data);
ArrayList<String> code = JsonPath.read(resBody,"$..code");
System.out.println(code);
DocumentContext jsonContext = JsonPath.parse(resBody);
String url = jsonContext.read("$.url");
System.out.println(url);
ArrayList<String> codelist = jsonContext.read("$..code");
System.out.println(codelist);
assertEquals("https://httpbin.hogwarts.ceshiren.com/post",url);
assertEquals(codelist.get(0),"");