Power Automate中如何将可变键值对象转为可循环数组?
正确实现Power Automate动态JSON键值对转循环数组
你的现有方法靠替换大括号再拆分逗号,会踩很多坑——比如字符串里带逗号的话会被错误拆分,数值、日期类型也会被转成字符串,后续处理容易出问题。给你两个靠谱的实现方案:
方案一:直接生成键值对数组(推荐)
用select函数一次性把JSON对象转成标准的键值对数组,步骤如下:
- 添加一个Compose动作,输入以下表达式:
select(keys(body('Parse_JSON')?['body']), createObject('key', item(), 'value', body('Parse_JSON')?['body']?[item()]))
这个表达式会先通过keys()提取所有键名,再用select把每个键和对应的值包装成{key: "键名", value: 对应值}的对象,最终输出一个可直接循环的数组。
- 后续的Apply to each直接选择这个Compose的输出即可,循环里可以用
items('Apply_to_each')?['key']获取键名,items('Apply_to_each')?['value']获取对应值。
方案二:遍历键数组逐个取值
如果需要分步处理,也可以这么做:
- 添加Compose动作,输入表达式提取所有键名:
keys(body('Parse_JSON')?['body'])
- 添加Apply to each,选择这个Compose的输出(键名数组)。
- 在循环内部,用以下表达式获取当前键对应的值:
body('Parse_JSON')?['body']?[items('Apply_to_each')]
当前键名可以直接用items('Apply_to_each')获取。
为什么你的原有方法不行?
- 字符串中如果包含逗号(比如地址字段"Los Angeles, CA"),
split会把它拆成两个元素,完全破坏原有数据结构。 - 替换大括号生成的不是标准JSON数组,后续如果需要解析JSON会报错,而且数值、日期等类型会被强制转成字符串,丢失原始类型信息。
内容的提问来源于stack exchange,提问作者user15235239
相关产品推荐
相关产品推荐

