Как я могу прочитать пары значений имени, используя имена ключей из ответа JSON

Я использую класс com.jayway.restassured.response.Response для чтения ответа от API. Это в следующем формате. Есть ли способ получить доступ к значению макета или регионов, используя имя ключа. Например - response.layout или response.regions? Я пытался использовать JSONSlurper, но это не сработало с классом Response. Любая помощь приветствуется.

JSON Response :
{
layouts:
    [
        regions:
            [
                [
                    metadata:null, 
                    endDate:null, 
                    displayName:null, 
                    roles:[], type:100, 
                    widgets:[], 
                    structure:100, 
                    repositoryId:headerRegionHomePage, 
                    name:header,
                    width:12, 
                    audiences:[], 
                    startDate:null, 
                    height:300
                ],
                [
                    structure:100, 
                    type:101, 
                    widgets:[], 
                    width:12
                ], 
                [
                    metadata:null, 
                    endDate:null, 
                    displayName:null, 
                    roles:[], 
                    type:102, 
                    widgets:[], 
                    structure:100, 
                    repositoryId:footerRegionHomePage, 
                    name:footer, 
                    width:12, 
                    audiences:[], 
                    startDate:null, 
                    height:300
                ]
            ],
        ]
    }

person Scorned Rider    schedule 23.07.2018    source источник


Ответы (2)


Попробуйте напрямую преобразовать ответ API в массив json:
JSONArray JSONResponseBody = new JSONArray(response.body().asString());
После этого вы сможете получить доступ к ключам для получения нужных значений.

person Matt    schedule 23.07.2018
comment
Это не сработало, так как я не могу преобразовать ответ JSON в массив, потому что он начинается с '{' вместо '[' - person Scorned Rider; 24.07.2018

Элегантным способом может быть использование десериализации.

Создайте POJO для ответа json. Вы можете использовать Gson/Jackson для десериализации вашего ответа на тип класса, или Rest Assured также предоставляет встроенный механизм для десериализации.

Response response = request.post("/");
ResponseBody body = response.getBody();

    // Deserialize the Response body into ClassType
ClassName responseBody = body.as(ClassName.class);

Попросите getters() извлечь соответствующее имя поля из ответа.

person Kshetra Mohan Prusty    schedule 28.07.2018