放心。是否有可能从请求json中提取值?

时间:2014-01-16 15:36:32

标签: java json rest rest-assured

我正以这种方式得到回应:

Response response = expect().statusCode(200).given().body(requestBody).contentType("application/json")
.when().post("/admin");
String responseBody = response.getBody().asString();

我在responseBody中有一个json:

{"user_id":39}

我可以使用rest-assured的方法提取到字符串只有这个值= 39吗?

4 个答案:

答案 0 :(得分:43)

如果您只对提取“user_id”感兴趣,也可以这样做:

String userId = 
given().
        contentType("application/json").
        body(requestBody).
when().
        post("/admin").
then().
        statusCode(200).
extract().
        path("user_id");

最简单的形式如下:

String userId = get("/person").path("person.userId");

答案 1 :(得分:16)

我找到了答案:)

使用JsonPathXmlPath(如果您有XML)从响应正文中获取数据。

就我而言:

JsonPath jsonPath = new JsonPath(responseBody);
int user_id = jsonPath.getInt("user_id");

答案 2 :(得分:9)

要将响应序列化为类,请定义目标类

public class Result {
    public Long user_id;
}

并将响应映射到它:

Response response = given().body(requestBody).when().post("/admin");
Result result = response.as(Result.class);

您必须在类路径中包含Jackson或Gson,文档说明:http://rest-assured.googlecode.com/svn/tags/2.3.1/apidocs/com/jayway/restassured/response/ResponseBodyExtractionOptions.html#as(java.lang.Class)

答案 3 :(得分:-1)

JsonPath jsonPathEvaluator = response.jsonPath();
return jsonPathEvaluator.get("user_id").toString();