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

如何从嵌套对象生成可遍历的fields数组?

将JSON对象的键值对转换为可遍历的数组元素

你需要把fields对象中的每一组键值对拆分成数组的独立元素,而非将整个fields对象作为数组的单个元素。以下分两种常用场景给出解决方案:

场景1:使用Power Automate实现

不要直接用createArray()包裹整个fields对象,而是通过Select动作拆分键值对:

  1. 定位到目标fields对象,比如从你的JSON数据源中取路径为body.value[0].fields的内容,将其作为Select动作的输入。
  2. 切换到Select动作的高级模式,在映射区域输入以下表达式:
    @json(concat('{"', item()?['Key'], '": ', string(item()?['Value']), '}'))
    
  3. 执行后,Select动作会输出符合预期的数组——每个元素都是fields中的一组独立键值对。

原理:当把对象作为Select的输入时,Power Automate会自动遍历对象的键值对(每个item()包含Key和Value属性),通过concat和json函数将每一组键值对重新构造成独立JSON对象,最终组成数组。

场景2:使用JavaScript代码实现

如果允许用代码处理(比如Power Automate的「运行JavaScript代码」动作、Node.js环境等),可以直接通过对象遍历快速转换:

// 假设fields是你从JSON中提取的目标对象
const fields = {
  "System.AreaId": { "oldValue": 233, "newValue": 234 },
  // ...其他字段
};

// 将对象键值对转换为数组元素
const resultArray = Object.entries(fields).map(([key, value]) => ({ [key]: value }));

这段代码通过Object.entries()获取对象的所有键值对数组,再用map()将每一组键值对转换为独立对象,最终得到你需要的数组结构。

为什么直接用createArray()不行?

createArray(body.value[0].fields)只会将整个fields对象作为数组的第一个元素放入数组,不会自动拆分对象内部的键值对,这就是你之前得到单元素数组的原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 07:58:10