如何使用 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; } } } }