gpt4 book ai didi

java - SerenityRest 过滤器响应主体

转载 作者:行者123 更新时间:2023-11-30 05:37:35 25 4
gpt4 key购买 nike

我正在尝试返回值“欢迎!”其中对象包含等于“Subject”的“name”键。响应体数据如下:

"payload": {
"mimeType": "multipart/alternative",
"headers": [
{
"name": "Mime-Version",
"value": "1.0"
},
{
"name": "Subject",
"value": "Welcome!"
},
{
"name": "To",
"value": "Jane Doe <xyz@xyz.com>"
},
{
"name": "Message-ID",
"value": "<123456.abc.com>"
}

以下代码片段将返回第一个遇到的“值”:“1.0”,但我需要获取名称=“主题”的值。我如何过滤结果并检查匹配的字符串?

Response response = SerenityRest.rest()
.contentType("application/json")
.get("URL")
response.then().statusCode(200);
String subject = response.jsonPath().getString("payload.headers.value");

值“Welcome”不是静态的,但“name”:“Subject”永远不会改变。

最佳答案

我不确定是否理解您的问题,如果您正在寻找 jsonpath 过滤器来获取与字段 "name": "Subject" 关联的值,这通常应该有效:

"payload.headers[?(@.name=='Subject')].value"

但是我看了一下json-path rest-assured,它是Serenity Rest用来执行json路径操作的库,并且该库不使用标准json路径合成器,而是使用基于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!"

这个博客帮助我理解合成变化:What's new in REST Assured 1.8?

关于java - SerenityRest 过滤器响应主体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56299651/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com