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

如何避免Logic Apps通过Data Factory传递JSON时出现多余反斜杠?

解决ADF传递Graph API JSON到存储过程的转义问题

问题根源

你当前用concat手动拼接JSON字符串时,直接将Graph返回的数组(body('Get_User_Email')?['value'])插入字符串中,ADF会自动将数组转为带转义符的字符串形式,导致最终传递的JSON出现大量\和\\\,存储过程无法识别合法的JSON结构。

最佳解决方法

方法1:用Compose活动构造原生JSON(推荐)

直接通过ADF的Compose活动生成无转义的JSON对象,避免手动拼接的错误:

  1. 在Pipeline中添加一个Compose活动
  2. 在Compose的「内容」中输入以下表达式(直接构造JSON结构):
{
  "Function": "WriteEmail",
  "JSON": @body('Get_User_Email')?['value']
}
  1. 将存储过程活动的参数值设置为@outputs('Compose')(如果存储过程接受JSON对象),或者@string(outputs('Compose'))(如果存储过程接受字符串类型的JSON)

方法2:用表达式正确构造JSON字符串

如果不想新增Compose活动,可直接用表达式完成合法JSON字符串的构造:

  • 若存储过程参数为字符串类型(NVARCHAR),使用以下表达式作为参数值:
concat('{"Function":"WriteEmail","JSON":', string(body('Get_User_Email')?['value']), '}')
  • 若存储过程参数为JSON类型,再套一层json()函数转为JSON对象:
json(concat('{"Function":"WriteEmail","JSON":', string(body('Get_User_Email')?['value']), '}'))

关键说明

  • string()函数会将数组转为标准无转义的JSON数组字符串,替代了手动拼接时的隐式转义
  • 避免用"代替双引号,直接在单引号包裹的表达式中使用双引号即可,更易读且不会引入额外转义

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 01:12:53