首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >新入门的JsonPath和应用编程接口自动化。需要关于如何使用条件提取以下JSON的值的建议

新入门的JsonPath和应用编程接口自动化。需要关于如何使用条件提取以下JSON的值的建议
EN

Stack Overflow用户
提问于 2020-08-16 16:06:00
回答 1查看 56关注 0票数 1
代码语言:javascript
复制
{
   "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值的路径

EN

回答 1

Stack Overflow用户

发布于 2020-08-17 15:03:38

我会使用POJO根据userGroups字段过滤出结果。POJO是一个表示JSON的Java类。您的JSON可以转换为:

代码语言:javascript
复制
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类

代码语言:javascript
复制
JsonPath jsonPath = JsonPath.from("json String or File");
UserEntity[] userEntities = jsonPath.getObject("$.users", UserEntity[].class);

我们告诉Rest-Assured's Json Path在JSON中查找users元素。它是一个列表,所以我们将其转换为数组,然后我们还可以将其更改为列表和迭代。

代码语言:javascript
复制
List<UserEntity> usersList = List.of(userEntities);

这将使手术变得更容易。我推荐使用Streams,但在这种情况下我们将使用常规的foreach:

代码语言:javascript
复制
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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63434584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档