我正在尝试使用 Wiremock 进行存根,以根据发布请求中发送的正文提供响应。
例如,发送这个 json 时:
{
"person": {
"firstName": "paul",
"age": "50"
}
}
我想发送 pauldata.json
这是我的请求/响应 json 下面:
{
"request": {
"method": "POST",
"url": "/api/test1",
"bodyPatterns": [
{
"matchesJsonPath": "$.person[?(@.firstName=='paul')]"
}
]
},
"response": {
"status": 200,
"bodyFileName": "pauldata.json",
"headers": {
"Content-Type": "application/json"
}
}
}
但是,这会导致错误:
JSON 路径表达式 '$.person[?(@.firstName=='paul')]' 无法匹配文档,因为错误 'net.minidev.json.JSONObject cannot be cast to java.util.List
此表达式: $.person[?(@.firstName=='paul')] 将 json 与http://jsonpath.herokuapp.com/上的 Jayway 实现匹配,但与 Wiremock 使用的 Goessner 实现不匹配。
我注意到,如果我只是在 jayway 中执行 $.person.firstName,它会返回“paul”,但是当我在 Goessner 中执行相同的操作时,我会得到 [“paul”]。
如何使用 JSONPath 的 Goessner 实现匹配键的值,以便可以根据数据中键的值返回自定义 json?