为了账号安全,请及时绑定邮箱和手机立即绑定

SerenityRest 过滤响应体

SerenityRest 过滤响应体

小怪兽爱吃肉 2022-12-15 15:57:45
我正在尝试返回值“欢迎!” 其中对象包含等于“主题”的“名称”键。响应体数据如下:"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");“欢迎”的值不是静态的,而是“名称”:“主题”永远不会改变。
查看完整描述

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!"


查看完整回答
反对 回复 2022-12-15
  • 1 回答
  • 0 关注
  • 63 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信