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

Karate DSL如何校验JSON字符串数组中是否存在指定子字符串

问题

我有如下所示的JSON字符串数组:

[
  "TEST1019005-2021-10-19T18:19:41.271055Z-PROCESSING-2",
  "TEST1019005-2021-10-19T18:19:41.271055Z-PROCESSING-1",
  "TEST1019002-2021-10-19T14:50:16.810678Z-PROCESSING-2",
  "TEST1019002-2021-10-19T14:50:16.810678Z-PROCESSING-1",
  "TEST1019002-2021-10-19T14:50:16.810678Z-PROCESSING-0",
  "777777-2021-10-19T09:24:33.064845Z-PROCESSING-2",
  "777777-2021-10-19T08:23:10.213230Z-PROCESSING-1",
  "777777-2021-10-19T08:23:10.213230Z-PROCESSING-0",
  "TEST1018001-2021-10-18T16:31:32.643392Z-PROCESSING-0",
  "TEST1013001-2021-10-13T15:13:59.974540Z-PROCESSING-0",
  "777777-2021-10-13T14:17:45.727585Z-PROCESSING-2",
  "Test01-2021-10-11T20:20:05.968159Z-PROCESSING-1",
  "Test01-2021-10-11T20:20:05.968159Z-PROCESSING-0",
  "333333333-2021-10-11T20:11:26.474697Z-PROCESSING-0",
  "333333333-2021-10-08T21:43:28.251925Z-PROCESSING-0",
  "232623234-2021-10-08T21:27:04.363014Z-PROCESSING-0",
]

需要校验数组的元素中是否包含当日日期2021-10-11或者词汇PROCESSING-1作为子串,使用Karate DSL实现该需求该如何操作?


解决方案

使用Karate DSL内置的正则匹配能力即可实现需求,核心匹配逻辑如下:

* match myArray contains "#regex (?i).*" + '匹配关键词' + ".*" 

完整参考代码

# 定义目标数组
def myArray =
"""
[
"Cust1019005-2021-10-27T18:19:41.271055Z-PROCESSING-2",
"Cust1019005-2021-10-19T18:19:41.271055Z-PROCESSING-1",
"Cust1013002-2021-10-13T15:23:57.510469Z-PROCESSING-2",
"333333333-2021-10-08T21:43:28.251925Z-PROCESSING-0",
]
"""
# 匹配是否包含指定日期
def dateQuery = '2021-10-11'
match myArray contains "#regex (?i).*" + dateQuery + ".*"
# 匹配是否包含指定状态词汇
def statusQuery = 'PROCESSING-1'
match myArray contains "#regex (?i).*" + statusQuery + ".*"

如果只需要判断两个条件任意一个满足即可,也可以合并正则规则:

match myArray contains "#regex (?i).*(2021-10-11|PROCESSING-1).*"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:45:00