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

如何在Azure Data Factory中遍历JSON键值对并转换为数组?

Azure Data Factory 动态遍历JSON键值对并转换为数组的实现方法

方法一:管道层面处理变量/参数

如果你的JSON存储在管道变量或参数中,直接用表达式即可完成转换:

  1. 核心表达式(生成目标数组):
map(keys(variables('yourJsonVariable')), concat(item(), '=', variables('yourJsonVariable')[item()]))
  • keys()函数提取JSON的所有键,返回键数组
  • map()遍历每个键,拼接成key=value格式的字符串,最终生成目标数组["Key1=val1", "key2=val2"]
  1. 转字符串(若需要):
    用join()包裹表达式,指定分隔符即可:
join(map(keys(variables('yourJsonVariable')), concat(item(), '=', variables('yourJsonVariable')[item()])), ', ')

输出示例:"Key1=val1, key2=val2"

该方法无需额外活动,性能高效,适合处理单个JSON变量/参数的场景。

方法二:Data Flow批量处理数据集JSON字段

如果需要处理数据集(如SQL表JSON列、Blob JSON文件)中的JSON字段,用Data Flow实现:

  1. 添加派生列,使用mapKeys()函数遍历键值对:
mapKeys(yourJsonColumn, (key, value) => concat(key, '=', value))

直接将JSON对象转换为目标数组。
2. (可选)转字符串:
用toString()直接转成字符串格式,或用join()指定分隔符:

// 转成带方括号的字符串
toString(mapKeys(yourJsonColumn, (key, value) => concat(key, '=', value)))
// 转成分隔符连接的字符串
join(mapKeys(yourJsonColumn, (key, value) => concat(key, '=', value)), ', ')

该方法支持大规模数据批量转换,适合ETL场景下的批量处理。

注意事项

  • 确保输入的JSON是合法的对象格式(而非数组或其他类型)
  • 若值包含特殊字符(如等号、逗号),可通过replace()函数添加转义逻辑,例如replace(value, '=', '\=')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 09:26:03