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

如何将Databricks的JSON数组作为参数/变量正确传入Azure Data Factory?

问题:如何从Databricks向Azure Data Factory(ADF)传递无反斜杠的JSON格式字符串/数组?

原实现代码

我最初用于将DataFrame转为JSON传递至ADF的Databricks代码如下:

from pyspark.sql.functions import col, to_json, struct
import json

for column in df.schema:
    df = df.withColumn(column.name, col(column.name).cast("string"))

df = df.fillna('')

json_df = df.select(to_json(struct(*df.columns)).alias("json"))
json_array = [row["json"] for row in json_df.collect()]

decoded_list = [json.loads(row_str) for row_str in json_array]
dbutils.notebook.exit(json.dumps(decoded_list))

遇到的问题

在ADF中处理该笔记本输出时,出现了多类格式不兼容问题:

  • 将变量类型设为数组时,代码传递的字典不符合字符串值要求;
  • 将变量类型设为字符串时,ADF提示预期字符串但传入了数组;
  • 若以字符串形式传递后循环处理,JSON中的反斜杠会导致WebActivity无法正确识别JSON格式。

解决方案

调整Databricks代码,移除不必要的JSON解码步骤,并修改JSON包装逻辑,确保输出无多余转义的JSON格式:

  1. 移除解码代码:删除以下将JSON字符串转回字典的步骤
decoded_list = [json.loads(row_str) for row_str in json_array]
  1. 替换为数组包装与转义处理:根据API端点要求,给每个JSON对象添加数组包裹,并替换转义引号以消除反斜杠
wrapped_json_array = ['[' + s.replace('\\"', '"') +']' for s in json_array]
  1. 输出处理后的内容:将处理后的wrapped_json_array通过dbutils.notebook.exit输出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 09:15:30