gpt4 book ai didi

java - 使用 JAVA 和 Selenium 的 REST ASSURED 计算数组的数量并访问 JSON 响应中的特定数组

转载 作者:行者123 更新时间:2023-11-30 01:51:01 26 4
gpt4 key购买 nike

我正在使用 Rest Assured API 和 Java 通过我的 selenium 自动化程序执行 POST 调用操作。 IO 得到如下所述的响应 -

{
"cmsContract": "HA1123",
"groupId": "12345",
"siteId": "4444-AP",
"stateCountyCode": "7978790"
},
{
"cmsContract": "HB2345",
"groupId": "9876",
"siteId": "8888-DK",
"stateCountyCode": "111225"
}

响应中大约有 1000 个或更多 JSON 对象。而且他们没有像“name”或“contractinfo”这样的响应标识符

我的查询:1. 如何使用 Rest Assured API 结合 JAVA 和 selenium 检索数组的总数(例如从 '{' 到 '}' 的数组总数)?

  • 如果我必须检索结果集的“stateCountyCode”,其中“cmsContract”为 HB2345,我该怎么做?我希望看到返回值 111225
  • 请提出建议。

    使用的库-

    org.json.JSONObject;
    io.restassured.RestAssured;
    io.restassured.response.Response;
    io.restassured.specification.RequestSpecification;

    最佳答案

    您可以使用JsonPath来解析JSON响应。基本上,您可以从字符串、文件或响应中获取 JsonPath 类。

    来自字符串:

    JsonPath path = JsonPath.from("json string");

    来自文件:

    JsonPath path = JsonPath.from(new File("path to file"));

    来自回复:

    Response response; //we get it from RestAssured by calling POST/GET etc
    JsonPath path = response.body().jsonPath();

    为了获取 JSON 结构中的任何元素,就像您的情况一样,我们必须将其提供给 JsonPath。 JSON 示例:

    { 
    "data": [
    {
    "name": "test"
    },
    {
    "name": "test1"
    }
    ]
    }

    为了访问数组中的元素,我们必须知道它的所有父元素。结构如下所示:

    path.get("parent.child.anotherChild");

    对于数组,事情变得更加棘手,因为我们必须使用索引。上例中的“data”是一个数组。为了访问 test1 我们将使用:

    path.get("data[1].name"); //second element in the array

    但这就是标准方法。 JsonPath 是一个更强大的库。

    最后回答一下你的问题。我们如何获取数组中 JSON 对象的数量?

    List<HashMap<String, Object>> jsonObjects = path.getList("data"); //You have to provide name of the Array's parent. In my case, it's `data`

    在上面的 HashMap 列表中,我们在 JSON 数组中拥有所有 JSON 对象。所以你可以使用多种方法来计算元素的数量。

    要计算有多少个 JSON 对象,您可以简单地使用 List 的方法:

    jsonObjects.size();

    使用相同的列表,我们可以获得 cmsContract 值,如您的示例所示。我们寻找值 HB2345

    标准for循环。如果您知道如何使用 Streams,则可以使用 Streams。

    public String getStateCountryCodeFromCmsContract(String cmsContractValue) {
    for (HashMap<String, Object> singleJsonObject : jsonObjects) {
    String cmsContract = (String) singleJsonObject.get("cmsContract");
    if (cmsContract.equals(cmsContractValue)) {
    return (String) singleJsonObject.get("stateCountyCode");
    }
    }
    }

    我们迭代每个 JSON 对象,检查 cmsContract 元素的值,如果它等于所需的值 - 返回 stateCountryCode 值。

    希望对你有帮助!

    关于java - 使用 JAVA 和 Selenium 的 REST ASSURED 计算数组的数量并访问 JSON 响应中的特定数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56062196/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com