当前位置: 首页 > 知识库问答 >
问题:

计算数组的数量

包翔
2023-03-14

我正在使用Rest Assured API通过selenium自动化程序执行调用后操作

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

响应中大约有1000个或更多JSON对象。而且它们没有响应的标识符,比如“name”或“contractinfo”

我的质疑: 1.我如何检索数组的总数(如从'{'到'}')使用Rest保证API结合JAVA和selenium?

请建议。

使用的图书馆─

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

共有1个答案

陆啸
2023-03-14

您可以使用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`

在上面的HashMaps列表中,JSON数组中有所有JSON对象。因此,您可以使用多种方法来计算元素。

要计算JSON对象的数量,只需使用List的方法:

jsonObjects.size();

使用相同的List,我们可以得到cms合同值,如您的示例中所示。我们寻找值HB2345

循环的标准。如果您知道如何使用流,您可以使用流。

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值。

希望有帮助!

 类似资料:
  • 问题内容: 我堆了一会儿。我尝试调试,但找不到解决方案。我正在尝试计算数字的出现。所以我的问题是当我打印输出时 代替 因此,如果数字出现的次数超过1,则应该只说一次,而不是出现的次数。欢呼这是代码 问题答案: 另一个选项是番石榴的Multiset类,它将为您跟踪计数: 在这里,Multiset,HashMultiset和Ints都是番石榴类。 请注意,Multiset通过使用Map和counter

  • 问题内容: 我正在尝试计算由文本字段接收的输入填充的数组的总数,均值和中位数。我设法算出了总数和均值,但我只是无法获得中位数。我认为在执行此操作之前需要对数组进行排序,但是我不确定如何执行此操作。这是问题吗,还是我没有找到另一个问题?这是我的代码: 问题答案: Java中的Arrays类具有静态的排序功能,您可以使用调用该功能。

  • 本文向大家介绍计算C ++中数组中的素数,包括了计算C ++中数组中的素数的使用技巧和注意事项,需要的朋友参考一下 给我们一个数字数组。目的是找到该数组中素数的计数。 质数是可以被1和数字本身整除的数。它只有两个因素。我们将检查从第一个元素到最后一个元素是否为质数,并增加迄今发现的质数。 要检查数字N是否为质数,请检查[2到N / 2]范围之间的数字是否将N整除。如果是,则它不是质数。否则,它是首

  • 我试图计算由TextField接收的输入填充的数组的总数、平均值和中位数。我已经算出了总数和平均数,但中位数无法计算出来。我认为在我可以这样做之前需要对数组进行排序,但我不确定如何这样做。是这个问题,还是还有一个我没有找到的?下面是我的代码:

  • 所以,这不是关于如何计算数字中的数字。它是如何计算每一个有多少。说: 多少个0,多少个1等等,我想把它放到树形图中 那我该怎么做呢? 数组将是任意大小的,所以我想我可以循环通过它,对于每个新的int,检查每个数字,如果那么等。但不确定如何增加KV映射中的值。

  • 如何计算数组中数字的平均值? 看看我是如何获取数据的; 我想知道每个阵列的平均值,所以: 我在React工作。我从React Redux中的选择器获取数据。我用它来计算每个用户的平均评论。 代码: