RestAssured JsonPath: плоский массив элементов в иерархии
Я пишу тест дыма, используя успокоенный и хочу пройти API, чтобы убедиться, что не произошло никаких неожиданных ошибок.
У меня есть структура данных, которая выглядит следующим образом:
{
...
"sites": [
{
...
"groups": [
{
...
"locations": [
{
...
"racks": [
{
"rackId": 123456789,
...
},
{
"rackId": 987654321,
...
},
...
]
}
]
}
]
},
{
...
"groups": [
{
...
"locations": [
{
...
"racks": [
{
"rackId": 11111111,
...
},
{
"rackId": 22222222,
...
},
...
]
}
]
}
]
},
...
]
}
Используя JsonPath, связанный с RestAssured, я пытаюсь получить плоский список всех rackIds, чтобы затем вызывать последующие запросы для этих rackIds.
jsonPath.getList("sites.groups.locations.racks.rackId", Long.class);
>> java.lang.NumberFormatException: For input string: "[[[406071537, 406071538, 406071539, 406071540, 406071541]]]"
Я попытался использовать этот путь, но не сработал, потому что я считаю, что этот синтаксис работает только с другой реализацией JsonPath, а не с той, которая связана с уверенностью
"$.sites[*].groups[*].locations[*].racks[*].rackId"
Теперь я подошел к этому, который дает мне списки списков списков, которые я мог бы затем сгладить сам. Но у меня возникает проблема, что числа по умолчанию интерпретируются как целые числа, но я получаю длинные значения.
List list = jsonPath.getList("sites.groups.locations.racks.rackId");
Есть идеи?
1 ответ
Просто используйте flatten()
:
List list = jsonPath.getList("sites.groups.locations.racks.rackId.flatten()");