1 回答
TA贡献1777条经验 获得超3个赞
我不确定是否理解你的问题,如果你正在寻找一个 jsonpath 过滤器来获取与该字段关联的值"name": "Subject",这通常应该有效:
"payload.headers[?(@.name=='Subject')].value"
但我看了一下json-path rest-assured,这是 Serenity rest 用来执行 json-path 操作的库,该库不使用标准的 json-path synthax,而是使用基于 groovy lambda 的 synthax 来执行高级搜索。所以这应该有效:
"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!"
添加回答
举报