基于 JSON 路径与 WireMock 中的逻辑运算符匹配 JSON 请求正文

Matching JSON request body based on JSON Path with logical operators in WireMock

在 WireMock 中,我尝试将基于 JSON 正文的请求与路径匹配器匹配,如下所示。但是 matchesJsonPath 表达式中似乎不支持逻辑运算符。

这个理解对吗?可能的替代解决方案是什么?任何帮助将不胜感激,谢谢!

...
"request": {
        "url": "/mock/score",
        "method": "PUT",
        "bodyPatterns": [
          {
            "matchesJsonPath": "$[?(@.code == '123')]"
          },
          {
            "matchesJsonPath": "$[?(@.amnt < '200000')]"
          }
        ]
      }
...

您的假设不正确。您可以在 JSONPath 过滤器中使用运算符。您可能会 运行 遇到问题,因为在 amnt 上检查的值是一个字符串。以下应该有效。

...
{
  "matchesJsonPath": "$[?(@.amnt < 20000)]"
}
...

这当然要求在正文中传递的值是数字类型而不是字符串本身。

{ 
  "amnt": 20000 // correct format
  "amnt": "20000" // incorrect format
}

如果您的 amnt 值是一个字符串,您可能必须 write a custom matcher 可以解析正文并将字符串值转换为数字(或 java 等效数据类型)