如何在ForEach活动内提取JSON中的machineId用于后续Web Activity?
提取ForEach活动中JSON数据的machineId值
场景说明
你当前在ForEach活动中处理Web Activity返回的JSON数据,需要提取其中的machineId字段用于后续Web Activity,且无法嵌套ForEach活动。你的JSON结构如下:
"grouping": { "branchNodes": [ { "type": "COUNTER", "machineId": 267315, "category": "CH9934787828372398 SUFT", "subgroup": { "first": { "href": "https://api.XXXXX.com/c/branch/COUNTER/267315" }, "second": { "href": "https://api.XXXXX.com/c/branch/COUNTER/267315/children" }, "third": { "href": "https://api.XXXXX.com/c/branch/267315" } } } ] }
管道流程:Web Activity → ForEach Activity → 目标Web Activity
解决方案
直接使用表达式在ForEach活动内定位提取,无需嵌套循环:
- 在后续Web Activity的参数中,使用以下表达式引用
machineId:
解释:@item().grouping.branchNodes[0].machineId@item()代表ForEach当前循环的单条数据,通过层级索引直接定位到branchNodes数组的第一个元素中的machineId字段。
补充说明
如果branchNodes数组存在多个元素,但你仅需要第一个元素的machineId,上述表达式依然适用;若需获取所有machineId值的数组,可使用XPath表达式:
@xpath(xml(json(item())), '//machineId/text()')
关于你尝试的Execute Pipeline活动:若要使用该方式,可在ForEach中给子管道传递@item()作为参数,在子管道内完成提取,但相比直接使用表达式,这种方式更繁琐,优先推荐直接引用表达式的方案。
内容的提问来源于stack exchange,提问作者Thanatos
相关产品推荐
相关产品推荐

