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

如何在Azure Data Factory中将输出改为JSON数组而非JSON对象

解决Azure Data Factory中XML转JSON数组的问题

以下是几种实用的解决方法,按推荐优先级排序:

方法一:通过Copy Activity直接转换(最简单)

  1. 配置XML源:在Copy Activity的Source中选择XML格式,设置XPath query定位到汇率条目节点,针对ECB的XML,可使用//Cube/Cube/Cube(注意处理命名空间:在XML源的Namespace mappings里添加gesmes=http://www.gesmes.org/xml/2002-08-01和ecb=http://www.ecb.int/vocabulary/2002-08-01/eurofxref,确保XPath能正确识别节点)。
  2. 配置JSON接收器:在Sink中选择JSON格式,进入Settings选项卡:
    • 勾选Write array as JSON
    • 若需给数组添加根节点,可设置Root path(比如exchangeRates),否则直接输出纯数组
  3. 字段映射:在Mapping里将XML节点的属性(如@currency、@rate,以及上层节点的@time)映射到JSON的对应字段,确保每个汇率条目被解析为独立对象。

方法二:通过Data Flow进行精细化转换

如果需要更复杂的字段处理,用Data Flow:

  1. 读取XML数据:创建Data Flow,Source选择XML格式,配置命名空间和XPath,读取所有汇率条目为行数据。
  2. 生成单个汇率对象:添加Derived Column转换,用表达式将字段组合成结构化对象,比如:
    struct(time: time, currency: currency, rate: toDouble(rate))
    
    命名新列为exchangeRate。
  3. 聚合为数组:添加Aggregate转换,不设置分组键,直接用collect(exchangeRate)生成数组列,命名为exchangeRates。
  4. 输出JSON数组:Sink选择JSON格式,开启Output to single file,在Settings里设置Array root为exchangeRates,即可输出包含汇率对象的JSON数组。

方法三:用Azure Function做自定义转换(灵活度最高)

如果上述方法无法满足需求,可添加Azure Function活动:

  1. 编写简单的Python/JS脚本,接收当前的JSON对象,提取其中的汇率列表并转为数组格式(比如从嵌套结构中提取目标列表,或直接重组输出结构)。
  2. 在ADF管道中,将转换后的JSON对象作为输入传入Azure Function,接收输出的JSON数组后写入目标存储。

内容的提问来源于stack exchange,提问作者Jose Angel Martinez Soler

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 16:55:05