使用Synapse Pipeline复制活动读取XML响应的REST API失败求助
问题描述
尝试通过Synapse Pipeline读取REST API端点并将数据以JSON格式落地,但API返回XML格式响应,运行时触发报错:
{"errorCode":"2200","message":"Failure happened on 'Source' side. ErrorCode=JsonInvalidDataFormat,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Error occurred when deserializing source JSON file ''. Check if the data is in valid JSON object format.,Source=Microsoft.DataTransfer.ClientLibrary,''Type=Newtonsoft.Json.JsonReaderException,Message=Unexpected character encountered while parsing value: <. Path '', line 0, position 0.,Source=Newtonsoft.Json,'","failureType":"UserError","target":"Copy REST API Data","details":[]}
不想使用现有SSIS包中的C#脚本,寻求替代解决方案。
解决方案(无需SSIS/C#脚本)
方法1:调整Copy Activity的源格式配置
直接在Copy Activity中适配XML源并输出JSON:
- 打开Copy Activity的源配置,在「格式」选项卡中选择
XML(默认是JSON,这是报错的核心原因) - 若XML有嵌套结构,可在「XML设置」中指定根节点(比如
/root/items),确保Synapse能正确识别数据结构 - 切换到目标配置,选择目标存储(如ADLS Gen2、Blob Storage),格式设置为
JSON,按需选择「单行」或「多行」模式
方法2:用Data Flow完成XML到JSON的转换
适合需要对数据做清洗/转换的场景:
- 创建新的Data Flow,添加XML源:选择REST数据集,配置API端点和认证信息,指定XML根节点
- 可选添加「Select」「Filter」等转换活动,调整字段或过滤数据
- 添加JSON接收器:配置目标存储路径,设置JSON格式参数(如编码、是否包含列名)
- 在Synapse Pipeline中添加「Execute Data Flow」活动,调用上述Data Flow
方法3:通过请求头强制API返回JSON
如果API支持格式协商,直接让API返回JSON避免转换:
- 在REST数据集的「请求头」中添加键值对:
Accept: application/json - 保存配置后重新运行Pipeline,若API识别该请求头,会直接返回JSON格式数据,无需处理XML转换
内容的提问来源于stack exchange,提问作者Morpheus273
相关产品推荐
相关产品推荐

