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

Karate 0.9.4测试:如何过滤JSON响应并提取一级id字段?

Karate 0.9.4 处理JSON响应:过滤并提取指定字段

给定如下JSON响应:

[
    {
        "id": "id_number_1",
        "name": "name"
    },
    {
        "id": "id_number_2",
        "name": "name 2",
        "nestedThing": {
            "id": "another_id",
            "name": "object2_name"
        }
    },
    {
        "id": "id_number_3",
        "name": "name 3"
    }
]

需求:移除所有包含nestedThing字段的列表项,再提取剩余项的一级id字段,最终得到["id_number_1", "id_number_3"]。

实现代码

可以通过Karate的filter和map函数组合完成,代码如下:

# 第一步:过滤掉包含nestedThing的列表项
def filteredItems = karate.filter(response, function(item) {
    return !item.containsKey('nestedThing')
})

# 第二步:提取过滤后列表中所有项的一级id字段
def targetIds = karate.map(filteredItems, function(item) {
    return item.id
})

也可以合并为一行简化写法:

def targetIds = karate.map(karate.filter(response, item => !item.containsKey('nestedThing')), item => item.id)

说明

  • karate.filter(response, 逻辑函数):遍历响应列表,保留满足逻辑条件的元素,这里用!item.containsKey('nestedThing')排除包含目标字段的项。
  • karate.map(过滤后的列表, 提取函数):遍历过滤后的列表,提取每个元素的id属性,最终生成目标id列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 23:48:15