java - 使用 Rest Assured 从 JSON API 获取唯一属性

标签 java rest-assured rest-assured-jsonpath

我有一个 API,它提供像这样的 JSON 响应

[{
"records": {
    "0": {
        "id": 123,
        "emp_type": "P",
        "emp_level": "8",
        "emp_id": "12345"
    },
    "1": {
        "id": 132,
        "emp_type": "Q",
        "emp_level": "1",
        "emp_id": "1234589"
    },
    "2": {
        "id": 132,
        "emp_type": "Q",
        "emp_level": "1",
        "emp_id": "1234589"
    },


    "3": {
        "id": 134,
        "emp_type": "Q",
        "emp_level": "3",
        "emp_id": "1231"
    }
}

}]

我想从此响应中找到所有唯一的 emp_type 属性。我尝试了以下方法,但没有一个起作用 -

方法-1

List<Map<String, String>> companies = response.jsonPath().getList("records");
        System.out.println(companies.get(0));

方法-2

List<Map<String, String>> companies = response.jsonPath().getList("records");
    System.out.println(companies.get(0).get("emp_type"));

方法-3

 Map<String, String> company = response.jsonPath().getMap("records");
        System.out.println(company.get("emp_type"));

方法-4

String username = response.jsonPath().getString("records[0]");
    System.out.println(username.indexOf(1));

方法 - 5

    String value = response.path("records").toString();
    System.out.println(value);

编辑-1:修复了 JSON。

最佳答案

您可以尝试以下方法:

JsonPath jsonPath = new JsonPath(json);
List<Map<String, Map<String, Object>>> list = jsonPath.getList("records");
Set<String> uniqueValues = new HashSet<>();
for (Map<String, Map<String, Object>> map : list) {
  for (Map<String, Object> m : map.values()) {
    uniqueValues.add(String.valueOf(m.get("emp_type")));
  }
}
for (String unique : uniqueValues) {
  System.out.println(unique);
}

关于java - 使用 Rest Assured 从 JSON API 获取唯一属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54945729/

相关文章:

java - 如何在放心的java中从值中找到键?

创建数组时出现 Java 空指针异常

java - 如何更改JFree图表而不重叠?

Java字节码和没有这样的方法报错

java - 高枕无忧 - 以数组形式发送 pojo

java - 在使用 java 的 Rest-assured 执行操作时,无法获取断言的响应正文数据

java - 为什么建议将实例变量声明为私有(private)?

rest-assured - 无效的 XML 路径键仍在 Rest Assured 中评估

spring-boot - Jersey返回404并带有任何错误状态代码?

java - RestAssured - JsonPath 根据给定的过滤条件从对象数组中过滤匹配对象的属性