如何使用 Rest Assured 根据条件获取 JSON 字段(节点)?

rest assureddynamic programmingprogramming更新于 2025/4/5 15:37:17

我们可以使用 Rest Assured 根据条件获取 JSON 字段(节点)。首先,我们将从请求中获取 JSON 格式的响应主体。然后将其转换为字符串。

这是在 JSONPath 类的帮助下完成的。要解析 JSON 响应,我们必须先将响应转换为字符串。

要获取响应,我们需要使用方法 - Response.body 或 Response.getBody。这两种方法都是 Response 接口的一部分。

一旦获得响应,就会在 asString 方法的帮助下将其转换为字符串。此方法是 ResponseBody 接口的一部分。然后,我们将借助 jsonPath 方法从响应主体中获取 JSON 表示。

我们将通过 Postman 向模拟 API URL 发送 GET 请求并观察其响应。

使用 Rest Assured,让我们获取 State 值为 New York 的 zip 字段的值。

示例

代码实现

import static io.restassured.RestAssured.given;
import org.testng.annotations.Test;
import io.restassured.RestAssured;
import io.restassured.path.json.JsonPath;
import io.restassured.response.Response;
public class NewTest {
   @Test
   public void jsonValueCondition() {

      //带有 Rest Assured 类的基本 URI
      RestAssured.baseURI = "https://run.mocky.io/v3";

      //从 GET 请求获取响应
      Response res = given()
      .when()
      .get("/8ec8f4f7-8e68-4f4b-ad18-4f0940d40bb7");

      //将 JSON 转换为字符串
      JsonPath j = new JsonPath(res.asString());

      //获取数组大小后获取 JSON 数组的值
      int s = j.getInt("Location.size()");
      for(int i = 0; i < s; i++) {
           String state = j.getString("Location["+i+"].State");

         //检查条件是否满足
         if(state.equalsIgnoreCase("New York")) {
            String zip = j.getString("Location["+i+"].zip");
            System.out.println(zip);
            break;
         }
      }
   }
}

输出


相关文章