Azure Data Factory复制活动中如何将SQL查询JSON结果传入Logic App?
解决Azure Data Factory传递JSON数组到Logic App时的转义斜杠问题
转义斜杠出现的核心原因是:ADF将SQL通过for json path返回的JSON字符串当作普通文本处理,在序列化传递过程中自动对双引号添加转义符,导致Logic App收到的是带转义的字符串而非原生JSON数组。以下是几种直接可行的解决方法:
方案1:在ADF中用数据流转换JSON结构
通过ADF数据流将字符串格式的JSON转为原生JSON数组,从源头避免转义:
- 复制活动完成后,添加数据流任务,数据源选择复制活动的输出数据集
- 添加派生列转换,使用
json(你的JSON字段名)函数将字符串字段解析为JSON数组 - 可选:添加拆分转换将数组拆分为单条记录,直接传递给Logic App(后续Logic App无需再拆分)
- 最后用接收器将处理后的JSON数据传递给Logic App(确保接收器格式为JSON)
方案2:在Logic App中直接处理转义字符串
如果不想修改ADF流程,在Logic App中做字符串清洗再解析:
- 接收ADF传递的内容后,先用字符串替换函数去掉转义斜杠:
(replace(triggerBody()?['JSONContent'], '\', '')JSONContent替换为ADF实际传递的JSON字段名) - 再用
json()函数将清洗后的字符串转为JSON数组:json(replace(triggerBody()?['JSONContent'], '\', '')) - 之后使用应用到每一个动作遍历数组,拆分出单条记录推送到Event Hubs
方案3:优化ADF数据集配置
确保ADF复制活动使用的数据集是JSON格式而非文本格式:
- 在ADF中创建JSON格式的输出数据集,设置正确的分隔符和结构
- 复制活动的输出关联该JSON数据集,让ADF识别返回内容为JSON而非普通文本,减少自动转义行为
注意事项
- 如果选择在Logic App中解析,建议提前生成JSON schema(用示例JSON数组生成),添加解析JSON动作并关联schema,确保解析后的数组结构正确
- 处理大体积JSON时,注意Logic App的内存限制,拆分单条记录后再推送Event Hubs更稳妥
内容的提问来源于stack exchange,提问作者azuresnowflake1
相关产品推荐
相关产品推荐

