RestAssured:如何在JSON数组中提取字段

时间:2017-03-30 10:30:38

标签: java arrays json rest-assured

我知道similar question已发布,但答案对我不起作用。

我正在使用RestAssured。如何将Response转换为JSON对象,然后提取JSON数组中的字段(在我的情况下,在errors数组中)?

Response response = 
           given().
                contentType(ContentType.JSON).
                body(jsonAsMap).
           when().
                post("/customers").
           then().
                statusCode(400).extract().response();
   //get "code" field inside "errors".

在Postman中测试请求时,我得到了这个结果:

{
  "uri": "/customers/",
  "query": null,
  "method": "POST",
  "contentType": "application/json",
  "status": 400,
  "statusMessage": "Bad Request",
  "errors": [
    {
      "field": "firstName",
      "code": "firstName.required", //need to extract this field
      "message": "firstName is required"
    }
  ]
}

实现这一目标的最简单方法是什么?

2 个答案:

答案 0 :(得分:2)

您可以使用JsonPath访问该值并将其转换为Java类型。

这样的事情:

String errorCode = ...then().extract().jsonPath().getString( "errors[0].code" )

答案 1 :(得分:0)

除了上面的答案,这里还有一个替代解决方案:

String errCode = ...then().extract().path("errors[0].code");