Azure Data Factory JSON输出格式问题求助:数组元素为字符串而非对象
在Azure Data Factory中生成包含对象数组的JSON输出解决方案
以下是完全在ADF Pipeline内解决JSON数组元素为字符串问题的步骤:
前提说明
假设你的CSV源数据结构如下(每行对应一个test对象的属性):
AccessionNum,orderunit,Testname 12345,JMJ,TVK 12345,PJ,CVK
步骤1:正确解析CSV源字段
在Data Flow的源转换中,确认AccessionNum、orderunit、Testname字段被正确识别为字符串类型,避免字段被自动解析为带转义引号的字符串。
步骤2:通过Aggregate转换生成对象数组
添加Aggregate转换,配置如下:
- 分组依据:选择
AccessionNum,确保同一编号的记录被归为一组 - 聚合列配置:创建名为
test的新列,使用表达式:collect(struct(orderunit, Testname))struct()函数会将orderunit和Testname包装为单个JSON对象collect()函数会将分组内的所有对象收集为一个数组
步骤3:配置JSON Sink输出
在Sink转换中选择JSON格式,设置关键参数:
- 文件模式:选择
Single file(若需按AccessionNum拆分文件,可选择Partitioned by并指定该字段) - 格式设置:
数组根节点留空(或按需设置),确保输出结构符合预期
验证输出结果
完成以上配置后,输出的JSON结构将符合预期:
{"AccessionNum": "12345","test": [{"orderunit": "JMJ","Testname": "TVK"},{"orderunit": "PJ","Testname": "CVK"}]}
特殊场景处理
如果CSV中的orderunit和Testname已经是带转义引号的字符串(例如值为"{\"orderunit\":\"JMJ\",\"Testname\":\"TVK\"}"),需先添加Parse转换:
- 选择目标字符串列,设置解析类型为
JSON,将字符串解析为结构体对象后,再执行上述Aggregate步骤。
内容的提问来源于stack exchange,提问作者Jerold Joel
相关产品推荐
相关产品推荐

