求助:ADF Concat函数重转义双引号致Web活动JSON构建失败
解决Concat拼接JSON字符串时双引号重复转义的问题
问题场景
你有一个存储JSON数组的字符串变量Array Values,内容为:
[ { "name": "gary" }, { "name": "frank" } ]
当使用@concat('{ "value": ', variables('Array Values'), '}')将变量拼接到JSON结构中时,变量内的所有双引号会被重复转义,最终生成的内容是:
{ "value": [ { \"name\": \"gary\" }, { \"name\": \"frank\" } ] }
这种格式不符合合法JSON规范,直接导致后续Web活动无法正常运行。即便用@string(json(concat(...)))处理也无效——因为Concat执行时已经完成了错误的转义操作。
解决方案
不要用字符串拼接的方式构建JSON,改用直接构建JSON对象再转字符串的方式,从根源避免转义问题:
方法1:使用createObject函数
@string(json(createObject('value', json(variables('Array Values')))))
步骤拆解:
json(variables('Array Values')):把字符串变量解析成JSON数组对象;createObject('value', ...):创建包含该数组的JSON对象;json()+string():确保对象格式合法,最终转成标准JSON字符串。
方法2:直接使用对象字面量(更简洁)
@string({ "value": json(variables('Array Values')) })
这种写法直接构建JSON结构,生成的字符串不会有多余转义,完全符合Web活动的JSON格式要求。
内容的提问来源于stack exchange,提问作者Matthew Campbell
相关产品推荐
相关产品推荐

