SerenityRest 过滤响应体

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


"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");

“欢迎”的值不是静态的,而是“名称”:“主题”永远不会改变。


小怪兽爱吃肉
浏览 66回答 1
1回答

慕森王

我不确定是否理解你的问题,如果你正在寻找一个 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" +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "&nbsp; &nbsp; \"mimeType\": \"multipart/alternative\",\n" +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "&nbsp; &nbsp; \"headers\": [\n" +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "&nbsp; &nbsp; &nbsp; &nbsp;{\n" +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \"name\": \"Mime-Version\",\n" +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \"value\": \"1.0\"\n" +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "&nbsp; &nbsp; &nbsp; &nbsp; },\n" +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "&nbsp; &nbsp; &nbsp; &nbsp; {\n" +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \"name\": \"Subject\",\n" +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \"value\": \"Welcome!\"\n" +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "&nbsp; &nbsp; &nbsp; &nbsp; },\n" +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "&nbsp; &nbsp; &nbsp; &nbsp; {\n" +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \"name\": \"To\",\n" +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \"value\": \"Jane Doe <xyz@xyz.com>\"\n" +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "&nbsp; &nbsp; &nbsp; &nbsp; },\n" +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "&nbsp; &nbsp; &nbsp; &nbsp; {\n" +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \"name\": \"Message-ID\",\n" +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; \"value\": \"<123456.abc.com>\"\n" +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "&nbsp; &nbsp; &nbsp; &nbsp; }\n" +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "&nbsp; &nbsp; ]\n" +&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "}}")&nbsp; &nbsp; .getString("headers.find{ it.name == 'Subject' }.value");// returns "Welcome!"
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python