如何在Azure Data Factory中向Web Activity传递AVRO文件内容?
在Azure Data Factory中正确传递AVRO内容到Web Activity的方法
问题场景
已通过Lookup Activity读取AVRO文件,并用Set Variable Activity将output.value存入变量variable1,变量结构如下:
{ "name": "variable1", "value": [ { "Type": "Email", "Value": "exmaple1@gmail.com", "Timestamp": "2023-12-20 15:54:20.SSS", "IsAllowed": true } ] }
需要将variable1的数组内容传递给Web Activity,构造如下格式的请求体:
{ "Key":"MarketingPreferences", "Value":[ { "Type":"Email", "Value":"exmaple1@gmail.com", "Timestamp":"2023-12-20 15:54:20.SSS", "IsAllowed":true } ] }
原写法问题
之前尝试的请求体写法会导致Value字段被序列化为字符串而非数组,不符合目标格式要求:
{ "Key": "MarketingPreferences", "Value": @{variables('variable1')} }
解决方案
方法1:使用表达式模式构造请求体
- 在Web Activity的Request body设置中,切换模式为Expression(而非默认的JSON)
- 输入以下表达式,直接构造符合要求的JSON对象:
@{ { "Key": "MarketingPreferences", "Value": variables('variable1') } }
方法2:通过字符串拼接生成JSON
如果需要保持JSON模式,可使用concat和json函数转换:
@json(concat('{"Key":"MarketingPreferences","Value":', string(variables('variable1')), '}'))
额外验证
确保variable1的类型为Array:在Set Variable Activity中,确认赋值的是@activity('LookupActivityName').output.value,而非经过字符串转换的内容。若变量类型为String,需先转换为Array:
@json(variables('variable1'))
内容的提问来源于stack exchange,提问作者nowYouSeeMe
相关产品推荐
相关产品推荐

