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
相关产品推荐
相关产品推荐

