Azure Data Factory WEB活动调用SendGrid API无法返回JSON格式结果
解决ADF调用SendGrid SENDERS接口返回非JSON格式问题
问题现象
调用SendGrid的/v3/marketing/senders GET接口时,Postman及其他接口均能正常返回JSON,但Azure Data Factory(ADF)返回的是带引号和转义字符的字符串格式,示例如下:
"[{"id":1111111,"nickname":"Marketing","from":{"email":"abc@m.abc.com","name":"Marketing"},"reply_to":{"email":"abc@m.abc.com","name":""},"address":"sometext","address_2":"","city":"sometext","state":"","zip":"00000","country":"ABC","verified":{"status":false,"reason":null},"updated_at":1111111,"created_at":111111,"locked":false}]\n"
解决步骤
1. 检查ADF HTTP活动的响应格式设置
- 打开HTTP活动的输出设置,确认响应格式选择为
JSON,而非Text或其他选项。ADF若识别响应格式错误,会将JSON内容当作纯字符串返回。
2. 添加强制JSON的请求头
- 在HTTP活动的请求头中添加
Accept: application/json,强制SendGrid API返回标准JSON格式,避免ADF因响应头识别偏差导致格式异常。 - 同时确认
Authorization头格式正确(Bearer {你的SendGrid API密钥}),权限问题也可能导致非预期响应。
3. 对返回结果进行二次解析
若上述设置后仍未解决,说明ADF已将JSON响应封装为字符串,需通过表达式手动解析:
- 在后续活动(如
Set Variable或数据流)中,使用ADF的json()函数转换结果:@json(activity('你的HTTP活动名称').output) - 若在数据流中处理,可添加派生列转换,使用表达式:
转换后即可得到正常的JSON对象。json(toString($body))
4. 排查响应编码设置
- 进入HTTP活动的高级设置,确认编码设置为
UTF-8,与SendGrid API的响应编码保持一致,避免因编码不匹配导致的转义问题。
内容的提问来源于stack exchange,提问作者Ricardo Alberto Mercedes Garca
相关产品推荐
相关产品推荐

