如何在Azure的ADF V2中转义动态内容中的JSON?

7xzttuei  于 2023-06-30  发布在  其他
关注(0)|答案(2)|浏览(99)

我正在调用Azure函数,并使用动态内容构建请求主体。
我是这样构建它的:

{
  "test": "Test1",
  "data": "@{activity('Upload SKU').output}"
}

我的“数据”节点有问题。@{activity('Upload SKU').output是一个JSON字符串。因此,动态内容会造成“混乱”。它无法逃脱。
它创建了这个:

{
  "test": "Test1",
  "data": "{"a": "1"}"
}

如何转义@{activity('Upload SKU').output,使{"a": "1"}创建{\"a\": \"1\"},以便将其视为字符串而不是"data"下的节点。

这就是我想要实现的:

{
  "test": "Test1",
  "data": "{\"a\": \"1\"}"
}
wrrgggsh

wrrgggsh1#

你可以从我之前的案例中得到一些线索:在ADF中调用Azure Function时出现错误“BadRequest”。
解决方案是在动态内容中使用@json()@concat()。对于您来说,整个data可能看起来像:

@json(concat('{"test": "Test1,"data":"',@{activity('Upload SKU').output,'"}'))

只是总结一下:
事实证明,ADF表达式编辑器中存在错误,因为当@Hooch将完全相同的表达式直接放入“body”字段而不使用表达式编辑器时,它可以工作。

bnlyeluc

bnlyeluc2#

我也遇到过类似的问题,我已经使用How should I escape strings in JSON?中讨论的JSON转义方法解决了这个问题。
在您的情况下,我的ADF表达式如下所示

{
  "test": "Test1",
  "data": "@{replace(replace(activity('Upload SKU').output, '\', '\\'), '"','\"')}"
}

相关问题