{
"users":[
{
"customerId":"2kXE3upOg5hnOG",
"ccoId":"paalle",
"userGroups":[
"CX Cloud Super Admins",
"CX Cloud Admins",
"aAutoGroupMarked12"
],
"emailId":"paalle@test.com",
"fullName":"Pavan Alle",
"isSelected":true
},
{
"customerId":"2kXE3upOg5hnOG",
"ccoId":"rtejanak",
"userGroups":[
"aTestUserGroupname1234"
],
"emailId":"rtejanak@test.com",
"fullName":"Raja Ravi Teja Nakirikanti"
}
],
"pagination":{
"pageNumber":1,
"totalPages":2,
"rowPerPage":10,
"totalRows":11
}
}这是我的JSON,当且仅当userGroups的组名为aAutoGroupMarked12时,才希望提取ccoId。我对API自动化和JsonPath是个新手。在我的公司,我们被告知要使用io.rest-assured的JsonPath类。有没有人能给我一些建议,告诉我应该如何写一个返回ccoId值的路径
发布于 2020-08-17 15:03:38
我会使用POJO根据userGroups字段过滤出结果。POJO是一个表示JSON的Java类。您的JSON可以转换为:
public class UserEntity {
public String customerId;
public String ccoId;
public List<String> userGroups;
public String emailId;
public String fullName;
public Boolean isSelected;
}每个变量名称都需要与JSON中的名称完全相同。
现在,下面这行代码将JSON转换为List<UserEntity>,因此我们将JSON转换为Java类
JsonPath jsonPath = JsonPath.from("json String or File");
UserEntity[] userEntities = jsonPath.getObject("$.users", UserEntity[].class);我们告诉Rest-Assured's Json Path在JSON中查找users元素。它是一个列表,所以我们将其转换为数组,然后我们还可以将其更改为列表和迭代。
List<UserEntity> usersList = List.of(userEntities);这将使手术变得更容易。我推荐使用Streams,但在这种情况下我们将使用常规的foreach:
public void String getCcoId(List<UserEntity> usersList) {
for (UserEntity user : usersList) {
List<String> userGroups = user.userGroups;
for (String userGroup : userGroups) {
if (userGroup.equals("aAutoGroupMarked12")) {
return user.ccoId;
}
}
}
}上面的代码查找特定的userGroup,如果它匹配第一次出现的,则返回ccoId
https://stackoverflow.com/questions/63434584
复制相似问题