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

放心验证 JSON 数组中的每个项目

濮赤岩
2023-03-14

给定我有这个JSON数组:

{
    value: ["000", "111", "345", "987"]
}

我想使用Rest-assured使用它的给定/when/then结构来验证字段的格式。

given().
    queryParam("myparam", myparamvalue).
when().
    get(callRoot).
then().
    body("value", matchesPattern("[0-9][0-9][0-9]");

我如何放心地循环并对JSON数组中的每个值应用测试?

我不知道JSON数组中会有多少个值。它可能只有1;它可能是100。

共有1个答案

林俊英
2023-03-14

您可以使用 JsonPath 并执行以下操作:

given().
    queryParam("myparam", myparamvalue).
when().
    get(callRoot).
then().
  body("value.*", matchesPattern("[0-9][0-9][0-9]");

详见https://github . com/rest-assured/rest-assured/wiki/usage # JSON-example。

或者,您可以将响应提取为字符串,将其转换为 JSONObject,在字段中提取 JSONArray,然后将正则表达式应用于数组中的每个项目:

Response response = given().queryParam("myparam", myparamvalue).when().get(callRoot).

JSONObject responseJson = new JSONObject(response.getBody().asString());
JSONArray values = responseJson.getJSONArray("values");

for(int i = 0; i < values.length(); i++) {
  String value = values.getString(i);
   Assert.assertThat(values, matchesPattern("[0-9][0-9][0-9]"));
}
 类似资料:
  • 我是新手,尝试使用json模式验证器版本4.3.0进行一些验证。运行时会出错。在这方面需要帮助。 这是我的模式(sample.json): 我的json响应是这样的: 编写的测试用例是: 我/我得到的错误是: 此外,我想知道是否有可能验证不同的数据类型,如字符,日期,数字?如果是的话,那也帮我一下。 提前感谢...

  • 我正在尝试使用模式验证响应JSON。即使尝试使用错误的模式验证响应,测试用例也会通过。 JSON响应: JSON模式: 我预计这里会出现错误,因为响应不包含所需的served_imsi值。但考验正在通过。

  • 我正在尝试使用jsonPath从JSON数组中提取值。 JSON响应示例: 目前的测试如下: 然而,我一直在处理我的错误代码。我只想知道它的价值。

  • 我有通过ajax调用存储数据的数组索引。我只想对数组中的一个索引进行验证。这是我的代码。 我只需要验证为 来自前端的数组如下所示

  • 我有一个示例JSON响应 如何验证何时然后当然后 尝试过类似的东西,但它不起作用。 我错过了什么还是做错了什么?

  • 我有一个带有GET方法的Rest API,其响应如下所示: [{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{,{,},{,{,},{,{,},{,{,},{,{,}这个响应的大小基于查询字符串是可变的,所以我不能用size方法验证它。 使用rest-assured,如何验证JSON响应有空对象,但JSON数组的大小不是零? 换句