regex 如何使用Wiremock检查请求体中字段的值是否为json

8qgya5xd  于 2023-03-20  发布在  其他
关注(0)|答案(2)|浏览(117)

我有一个JSON请求,我需要检查一个字段的值是否为json。我正在尝试使用regex:

"request": {
    ...
    "bodyPatterns": [
      {
        "equalToJson": {
          "field_1": "Value",
          "field_2": "${json-unit.any-number}",
          "field_3": "${json-unit.regex}^\u007B.\u007D$"
        }
      }
    ]
  }

我也试过:

"field_3": "${json-unit.regex}\\{.\\}"

"field_3": "${json-unit.regex}{.}"

但是这些都不起作用,如何才能正确地确定字段的值包含JSON?
必须与存根匹配的示例请求:

{
    "field_1": "Value",
    "field_2": 100,
    "field_3": {
        "1.1": 2,
        "1.2": null,
        "1.3": null,
        "1.4": null,
         ...
    }
}
gxwragnw

gxwragnw1#

您只能对字符串值使用正则表达式占位符,因此在此示例中这不起作用,因为元素的值是一个对象。
但是,如果您只想说“我希望这个元素存在,但不关心其内容”,则可以使用"${json-unit.ignore}"作为值。
如果您确实需要更明确一些,我建议您仍然执行上述操作,但是添加第二个主体匹配器,该主体匹配器带有一个JSONPath表达式,用于说明对象应该包含什么。

62lalag4

62lalag42#

再举一个如何使用regex的例子:

{
  "request": {
    "urlPath": "/customer",
    "method": "POST",
    "bodyPatterns": [
      {
        "equalToJson": {
          "country": "${json-unit.regex}(DE)|(ES)|(IT)|(FR)"

相关问题