如何将 RestAssured 响应转换为 Java 列表
How to convert RestAssured Response to 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。
你这里有一个 JSON 对象数组。
您可以轻松地将其转换为 Java classes 以更有效地使用过滤器。
创建一个名为 class 的用户对象,它表示单个 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
中的点表示"start with the root of JSON"
要使用 stream().filter() 首先需要将 JSON 转换为 POJO 然后你可以使用 Jackson 提供的对象映射器,下面是依赖项:-
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>
要将您的 JSON 转换为 POJO,您可以在下面使用,或者您可以命名您想要的 class:-
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,您可以放置从 GET api 获得的响应。
现在您已经从 JSON 创建了项目列表。所以你现在可以使用流了。
转到 http://www.jsonschema2pojo.org/ 并将您的 JSON 转换为 Java class,它会自动将 JSON 更改为 Java POJO,并且您可以用来获取响应,假设你的 POJO Class 名称是 PojoResponseClass
Gson g = new Gson();
PojoResponseClass resObj = g.fromJson(response.asString(), PojoResponseClass.class);
[
{
"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。
你这里有一个 JSON 对象数组。
您可以轻松地将其转换为 Java classes 以更有效地使用过滤器。
创建一个名为 class 的用户对象,它表示单个 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
中的点表示"start with the root of JSON"
要使用 stream().filter() 首先需要将 JSON 转换为 POJO 然后你可以使用 Jackson 提供的对象映射器,下面是依赖项:-
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version>
</dependency>
要将您的 JSON 转换为 POJO,您可以在下面使用,或者您可以命名您想要的 class:-
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,您可以放置从 GET api 获得的响应。 现在您已经从 JSON 创建了项目列表。所以你现在可以使用流了。
转到 http://www.jsonschema2pojo.org/ 并将您的 JSON 转换为 Java class,它会自动将 JSON 更改为 Java POJO,并且您可以用来获取响应,假设你的 POJO Class 名称是 PojoResponseClass
Gson g = new Gson();
PojoResponseClass resObj = g.fromJson(response.asString(), PojoResponseClass.class);