请放心 - 无效 JSON 表达式:Script1.groovy:1:意外输入:'['

Rest assured - Invalid JSON expression: Script1.groovy: 1: Unexpected input: '['

我正在尝试使用 JSON 表达式

检索具有“类型”:“系统”的工作流的 ID

方法:

public static int getSystemWorkflowId(final Map<String, String> cookies) {
        return workflow.get(cookies).then().extract().jsonPath().getInt("$..workflows[?(@.type =='system')].id");
    }

有效载荷

{
    "workflows": [
        {
            "id": 1,
            "name": "Recruitment workflow",
            "type": "system",
            "options": [
                
            ],
            "active": 1
        },
        {
            "id": 3,
            "name": "TestWorkflow",
            "options": [
                
            ],
            "active": 1
        }
    ]
}

错误:

java.lang.IllegalArgumentException: Invalid JSON expression: Script1.groovy: 1: Unexpected input: '[' @ line 1, column 39. $..workflows[?(@.type =='system')].id

我已经在在线评估器中测试了表达式,它似乎有效...enter image description here

谢谢!

Rest-Assured 中的 JsonPath 不是 JsonPath Jayway,请不要混淆。

Rest-Assured 中的 JsonPath 利用 GPath groovy 查找和提取值。

正确的表达方式是:

.getInt("workflows.find {it.type == 'system'}.id")