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

Logic Apps中遍历JSON嵌套可选数组并提取指定字段的方法咨询

作为Logic Apps新手,处理这种嵌套且带有可选字段的数组确实容易犯难,我来一步步带你实现这个迭代需求,帮你理清逻辑~

整体思路

我们需要通过嵌套Foreach循环来遍历多层数组,同时用Condition判断来处理可选的actions字段,确保在它不存在时不会报错,还能正确提取所有需要的字段。


具体实现步骤

1. 先解析JSON数据

首先确保你已经拿到目标JSON数据(比如通过HTTP触发器、Blob读取等方式),然后添加一个Parse JSON动作:

  • 输入选择你获取到的原始JSON字符串
  • 点击「Use sample payload to generate schema」,把你提供的JSON去掉顶部的"bullseye":字段后粘贴进去,自动生成Schema。这一步能让Logic Apps识别JSON的结构,方便后续访问字段。

2. 外层遍历:遍历rings数组

添加一个Foreach循环动作,循环的输入选择:

body('Parse_JSON')?['rings']

(这里的Parse_JSON是你刚才添加的解析动作名称,记得根据实际情况修改)

3. 中层遍历:提取expansionCriteria的type和threshold

在第一个Foreach循环内部,再添加一个Foreach循环,输入选择当前ring里的expansionCriteria数组:

items('For_each')?['expansionCriteria']

在这个循环里,你可以直接访问每个条件的字段:

  • 获取type:items('For_each_2')?['type']
  • 获取threshold:items('For_each_2')?['threshold']

你可以添加Compose或者Append to array variable动作,把这些值保存起来(比如存入一个数组变量,方便后续使用)。

4. 判断并处理可选的actions和skillsToRemove

在第一个Foreach循环内部(和第二个Foreach同级),添加一个Condition动作,判断条件设置为:

not(empty(items('For_each')?['actions']))

这个表达式的作用是检查当前ring是否存在非空的actions字段。

如果条件为真(存在actions)

在True分支里添加第三个Foreach循环,输入选择skillsToRemove数组:

items('For_each')?['actions']?['skillsToRemove']

在这个循环里,你可以访问每个技能的信息:

  • 技能名称:items('For_each_3')?['name']
  • 技能ID:items('For_each_3')?['id']
  • 技能URI:items('For_each_3')?['selfUri']

同样用Compose或Append to array variable来保存这些数据。

如果条件为假(没有actions)

可以留空,或者添加一个Log动作记录「当前ring无actions字段」,方便后续排查。


关键注意事项
  • 所有字段访问都用?:比如items('For_each')?['actions'],这是Logic Apps里的安全访问运算符,如果字段不存在,不会抛出错误,只会返回null,避免流程中断。
  • 变量初始化:如果需要把所有提取的数据汇总,可以提前初始化几个数组变量(比如expansionCriteriaList、skillsToRemoveList),在每个循环里用Append to array variable把数据加进去。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 06:49:08