Как избежать кавычек в JSON в Microsoft Flow?

У меня есть MS Flow для создания адаптивной карты из недавно сгенерированной задачи Planner. Это работает, если в заголовке нет двойных кавычек. Это нарушает JSON-код для адаптивной карты.

Я пытался вставить функцию @ replace прямо в json-код, но это не сработало.

Это мой рабочий (без кавычек в названии задачи) пример:

{
    "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 (\").

Но ошибка в MS Flow говорит: невозможно получить свойство 'properties' с неопределенной или нулевой ссылкой.

1 ответ

Наконец я нашел ошибки в своем подходе:

  1. Я пробовал вложенную ссылку (два раза @{})
  2. Я неправильно процитировал вложенные двойные кавычки

Итак, вот решение:

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

Я нашел что-то, что я хотел бы обойти. Но, все еще есть чувство, должно быть лучшее решение. Я добавил шаг между инициализацией моей собственной переменной и поместил туда функцию replace:

скриншот замены

Таким образом, функция сводится к: replace(triggerBody()?['Title'],'"','\"')

Другие вопросы по тегам