如何将 RestAssured Response 转换为 Java List


[
{
"tags": [],
"id": "aaaaaaaaaaaa",
"author": "admin",
"type": "profile",
"description": "",
"name": "defaultProfile1",
"display_name": "Default1"
},
{
"tags": [],
"id": "bbbbbbbbbbbbb",
"author": "admin",
"type": "profile",
"description": "test profile",
"name": "defaultProfile2",
"display_name": "Default2"
}]

这是我从 Get 请求中得到的响应,如何将此响应转换为 Java 列表,以便我可以在列表中执行 Stream((.filter。

要使用 stream((.filter(( 首先你需要将 JSON 转换为 POJO,然后你可以使用 Jackson 提供的对象映射器,下面是依赖项:-

<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>

要将JSON转换为POJO,您可以使用以下内容,也可以命名所需的类:-

public class Author {
public List<String> tags;
public String id;
public String author;
public String type;
public String description;
public String name;
@JsonProperty(value = "display_name")
public String displayName;
// getter - setter 
}

最后,我们必须创建作者列表,以便您可以在那里使用流:-

List<Author> list = Arrays.asList(mapper.readValue(json, Author[].class));

代替json,你可以放你从GETapi得到的响应。 现在,您已经从 JSON 创建了项目列表。因此,您现在可以使用流。

这里有一个 JSON 对象数组。

您可以轻松地将其转换为 Java 类,以便更有效地使用过滤器。

创建一个名为 User Object 的类,该类表示单个 JSON 对象,如下所示:

public class UserObject {
public List<String> tags;
public String id;
public String author;
public String type;
public String description;
public String name;
@JsonProperty(value = "display_name")
public String displayName;
}

然后,使用JsonPath将 JSON 转换为这些对象的列表:

JsonPath path = JsonPath.from(json); //String or File
List<UserObject> users = Arrays.asList(path.getObject(".", UserObject[].class));

基本上,您将 JSON 映射到 UserObject[] 数组,并将其转换为 List 以进行流处理。

path.getObject中的点表示"从 JSON 的根开始">

Goto http://www.jsonschema2pojo.org/并将您的 JSON 转换为 Java 类,它会自动将 JSON 更改为 Java POJO,并且您可以使用它来获取响应,假设您的 POJO 类名称是 PojoResponseClass

Gson g = new Gson();
PojoResponseClass resObj = g.fromJson(response.asString(), PojoResponseClass.class); 

最新更新