在Logic Apps中通过动态键从对象数组取值的问题
在Logic Apps中通过动态键从对象数组取值的解决方案
问题说明
给定如下JSON结构的数组数据:
{ "foo.companies": { "type": "Array", "value": [ { "foo": [ "123" ] }, { "bar": [ "123" ] } ] } }
需要实现类似PHP中通过动态键获取对应值的逻辑:
$bar = ['foo' => 123]; $dynamicField = 'foo'; $result = $bar[$dynamicField]; // $result contains 123
但尝试使用表达式item()?.item()['dynamic_key_field']?[0]执行失败,需解决Logic Apps中的动态键取值问题。
解决方法
1. 遍历数组时的动态取值
如果是在For each循环中遍历foo.companies.value数组,要获取当前元素中动态键对应的值,使用以下表达式:
item()?[variables('dynamic_key_field')]?[0]
item()指代循环中的当前对象元素(例如第一个元素为{"foo": ["123"]})variables('dynamic_key_field')是存储目标键名的变量(比如值设为foo或bar)?[0]用于提取键对应数组中的第一个元素(因为你的键值是数组类型)
2. 直接从指定索引元素取值
若无需遍历,直接从数组某一索引位置的元素中取动态键的值,比如取第一个元素:
body('你的触发器或动作名称')?['foo.companies']?['value']?[0]?[variables('dynamic_key_field')]?[0]
将body('你的触发器或动作名称')替换为实际输出该JSON数据的触发器或动作名称即可。
3. 关键注意事项
- 确保
dynamic_key_field变量的类型为字符串,且值与目标键名完全匹配 - 使用
?空值安全运算符可避免因键不存在导致的表达式执行报错
内容的提问来源于stack exchange,提问作者peterhillie
相关产品推荐
相关产品推荐

