使用RestAssured调用RestAPI校验返回JSON字段报参数未定义错误如何解决
问题原因
- RestAssured 内置的 JsonPath 解析时,若 JSON 节点的 key 为纯数字字符串,直接使用
.数字的路径写法会被识别为参数占位符,而非实际节点名称,因此触发参数未定义的报错。 - 额外注意:接口返回的
exampleData是数值类型的 33,原代码中使用equalTo("33")匹配字符串类型值,路径修正后也会出现断言不匹配的问题。
解决方案
对断言的路径和匹配规则做两处调整即可:
- 纯数字的节点 key 改用中括号+单引号的写法引用,将路径
data.examples.2.exampleData修改为data.examples['2'].exampleData - 将字符串匹配规则改为数值匹配,把
equalTo("33")修改为equalTo(33)
修改后的完整代码如下:
String payload_data = "{" + "\"Time\":1638057600, " + "\"exampleType\":example, " + "\"Id\":[2]}"; RestAssured.defaultParser = Parser.JSON; given(). contentType(ContentType.JSON). body(payload_data). when(). post(api_url). then(). statusCode(200). body("data.examples['2'].exampleData", equalTo(33)); }
内容的提问来源于stack exchange,提问作者bzkl_makiko
相关产品推荐
相关产品推荐

