REST Assured 系列汇总 之 REST Assured 66 - How To Parse A JSON Array Response To A Java List In Rest Assured?
介绍
不是每次都需要将 response 转换成一个 POJO 类的实例来获取值。我也可以将一个 JSON Array 响应直接转换成一个 Java List,这样就不创建 POJO 类了。
前提条件
How To Parse A JSON Object Response To A Java Map In Rest Assured
添加 rest assured 依赖库
<!-- REST Assured -->
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>4.4.0</version>
</dependency>
解析 JSON Array 成 Java List
一旦响应返回,如果是一个 JSON Array,那么可以将它解析成一个 List。有一个 as() 方法,接受一个 TypeRef 引用来支持泛型。例如:一个 JSON Array 可以被表示成一个 List。 为了强制转换 JSON Array response,需要用到 as() 方法和 TypeRef。TypeRef 是一个抽象类,用于当反序列化一个 response时,具体化类型。
import java.util.List;
import java.util.Map;
import io.restassured.RestAssured;
import io.restassured.common.mapper.TypeRef;
public class ParseJsonArrayResponseToList {
public static void main(String[] args) {
List<Map<String,Object>> responseBody = null;
responseBody =
RestAssured
.given()
.baseUri("https://restful-booker.herokuapp.com/")
.basePath("booking")
.when()
.get()
.then()
.extract()
.body()
// Extract response as List<Map<String,Object>>
// Since the response in a List of Map format.
.as(new TypeRef<List<Map<String,Object>>>() {
});
System.out.println("Total bookings : "+ responseBody.size());
System.out.println("All booking ids are: ");
for(Map<String,Object> booking : responseBody)
{
System.out.println(booking.get("bookingid"));
}
}
}
输出:
Total bookings : 10
All booking ids are:
10
4
6
1
3
7
2
5
8
9