如何在 Microsoft Flow 中转义 json 中的引号?

How to escape quotes in json within Microsoft Flow?

我有一个 MS Flow 可以根据新生成的 Planner 任务构建自适应卡。除非标题中有双引号,否则它会起作用。这打破了自适应卡的 json-code。

我试图将 @replace-function 直接注入到 json-code,但没有成功。

这是我的工作(任务标题中没有引号)示例:

{
    "type": "AdaptiveCard",
    "body": [
        {
            "type": "TextBlock",
            "text": "@{triggerBody()?['title']}",
            "wrap": true
        },
    ],
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.0"
}

这是我尝试替换的方法:

{
    "type": "AdaptiveCard",
    "body": [
        {
            "type": "TextBlock",
            "text": "@{replace(@{triggerBody()?['title']},'\"','\\"'}",
            "wrap": true
        }
    ],
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.0"
}

我希望替换函数将双引号 (") 替换为转义的 blackslash-version (\")。

但 MS Flow 中的错误显示:无法获取 属性 'properties' 未定义或空引用。

我发现了一些我会考虑的解决方法。但是,还是有感觉,一定有更好的解决办法。我在两者之间添加了一个步骤来初始化我自己的变量,并将替换函数放在那里:

所以函数归结为:replace(triggerBody()?['title'],'"','\"')

我终于发现了我方法中的错误:

  1. 我尝试了嵌套引用(两次@{})
  2. 我把嵌套的双引号引用错了

所以这里是解决方案:

{
    "type": "AdaptiveCard",
    "body": [
        {
            "type": "TextBlock",
            "text": "@{replace(triggerBody()?['title'],'"','\"')}",
            "wrap": true
        }
    ],
    "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
    "version": "1.0"
}