Я не уверен, что понимаю ваш вопрос, если вы ищете фильтр jsonpath для получения значения, связанного с полем "name": "Subject"
, это должно нормально работать:
"payload.headers[?(@.name=='Subject')].value"
Но явзгляните на json-path rest-assured , которая является библиотекой, используемой Serenity rest для выполнения операции json-path, и эта библиотека использует не стандартный синтаксис json-path, а синтакс, основанный на groovy lambda длявыполнить расширенный поиск.Так что это должно работать:
"headers.find{ it.name == 'Subject' }.value"
Я тестирую на полном примере:
JsonPath.from("{\"payload\": {\n" +
" \"mimeType\": \"multipart/alternative\",\n" +
" \"headers\": [\n" +
" {\n" +
" \"name\": \"Mime-Version\",\n" +
" \"value\": \"1.0\"\n" +
" },\n" +
" {\n" +
" \"name\": \"Subject\",\n" +
" \"value\": \"Welcome!\"\n" +
" },\n" +
" {\n" +
" \"name\": \"To\",\n" +
" \"value\": \"Jane Doe <xyz@xyz.com>\"\n" +
" },\n" +
" {\n" +
" \"name\": \"Message-ID\",\n" +
" \"value\": \"<123456.abc.com>\"\n" +
" }\n" +
" ]\n" +
"}}")
.getString("headers.find{ it.name == 'Subject' }.value");
// returns "Welcome!"
Этот блог помогает мне понять изменение синтаксиса: Что нового в REST Assured 1.8?