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

如何通过Azure Logic Apps将D365 F&O数据事件转为易处理JSON格式

高效实现D365 F&O嵌套JSON的扁平化处理(Azure Logic Apps)

问题分析

你需要将Service Bus推送的D365嵌套JSON转换为扁平化对象,之前用Select操作得到的是字符串数组而非目标对象,且现有方案处理400+数据时耗时超1分钟,核心需求是高效的单步对象转换。

高效解决方案:使用reduce函数构建扁平化对象

Azure Logic Apps的reduce函数可以通过单次遍历数组直接构建目标对象,避免循环操作的性能开销,适合处理大数据量场景。

核心表达式

在Compose操作中使用以下表达式(直接替换为你的实际数据路径即可):

reduce(
    triggerBody()?['body']?['InputParameters'][0]?['value']?['Attributes'],
    {},
    union(
        $item,
        createObject(
            $current?['key'],
            if(
                isObject($current?['value']) and contains($current?['value'], 'Value'),
                $current?['value']?['Value'],
                $current?['value']
            )
        )
    )
)

表达式说明

  1. 数据源路径:triggerBody()?['body']?['InputParameters'][0]?['value']?['Attributes'] 指向输入JSON中的Attributes数组
  2. 初始值:{} 表示从空对象开始构建
  3. 迭代逻辑:
    • 用createObject将当前数组元素的key和处理后的value转为键值对
    • 通过if判断处理嵌套值:如果value是包含Value属性的对象,则取Value字段,否则直接取原始value
    • 用union将当前键值对合并到累积的对象中,逐步构建完整的扁平化对象

为什么这个方法高效

  • 单次遍历数组:reduce是单步操作,相比For Each循环减少了多次操作调用的开销
  • 无额外中间步骤:直接从数组生成目标对象,不需要先生成数组再转换,节省处理时间
  • 适配大数据量:处理400+条数据时,性能远优于循环类操作,不会出现超时问题

验证结果

针对你的输入数据,该表达式会输出期望的扁平化对象:

{
    "first_name": "john",
    "last_name": "doe",
    "age": 25
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 08:56:12