You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Wiremock检测请求体JSON数组是否存在元素缺失指定属性

Wiremock JSON匹配:检测数组中至少一个元素缺失指定属性

需求说明

需要配置Wiremock请求匹配器,当请求体的array1数组中至少存在一个元素缺失prop1属性时触发匹配(prop1可以是任意值甚至null,只要元素没有这个属性就算)。

问题分析

你之前使用的表达式 "expression" : "$.array1[?(@.prop1)]", "absent: true" 仅在**所有数组元素都缺失prop1**时生效,原因是:

  • $.array1[?(@.prop1)] 会返回array1中所有包含prop1的元素
  • 只有当这个结果为空数组(即所有元素都没有prop1)时,absent: true才会触发匹配,不符合「至少一个缺失」的需求。

正确的匹配配置

使用JSONPath表达式定位缺失prop1的元素,再通过Wiremock的matchesJsonPath验证该结果非空即可:

{
  "request": {
    "method": "POST",
    "url": "/your-target-endpoint",
    "bodyPatterns": [
      {
        "matchesJsonPath": {
          "expression": "$.array1[?(!@.prop1)]",
          "matches": ".*"
        }
      }
    ]
  },
  "response": {
    "status": 400,
    "body": "请求参数错误:array1中至少有一个元素缺失prop1属性",
    "headers": {
      "Content-Type": "application/json"
    }
  }
}

配置解释

  • $.array1[?(!@.prop1)]:JSONPath表达式,筛选array1中所有不包含prop1属性的元素
  • "matches": ".*":正则匹配,只要表达式返回的结果非空(即存在缺失prop1的元素),就满足匹配条件

验证场景

  • ✅ 当array1中有1个或多个元素缺失prop1:匹配成功
  • ❌ 当array1中所有元素都包含prop1(无论值是字符串、null还是其他):匹配失败

内容的提问来源于stack exchange,提问作者Alexey Gavrilik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 22:02:12