Как преобразовать RestAssured Response в Java список - PullRequest
1 голос
/ 04 февраля 2020
[
{
    "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"
}]

это ответ, который я получаю из запроса на получение. Как я могу преобразовать этот ответ в список Java, чтобы я мог выполнить фильтр Stream ().

Ответы [ 3 ]

1 голос
/ 04 февраля 2020

Чтобы использовать stream (). Filter (), сначала вам нужно конвертировать JSON в POJO, а затем вы можете использовать объектный маппер, предоставленный Джексоном ниже, это зависимость: -

<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 вы можете поместить свой ответ, который вы получаете от GET API. Теперь вы создали свой список предметов из JSON. Теперь вы можете использовать потоки.

1 голос
/ 04 февраля 2020

Здесь у вас есть массив JSON объектов.

Вы можете легко преобразовать его в Java классы, чтобы использовать фильтр еще более эффективно.

Создайте класс с именем User Объект, представляющий один 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 to UserObject [] и преобразовать его в список для обработки потока.

Точка в path.getObject означает «начать с root из JSON»

0 голосов
/ 09 февраля 2020

Перейти к http://www.jsonschema2pojo.org/ и преобразовать ваш JSON в Java класс, он автоматически изменит JSON на Java POJO и что вы можете использовать для получения ответа, предположим, ваш класс POJO зовут PojoResponseClass

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