Как избежать кавычек в 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 ответ
Наконец я нашел ошибки в своем подходе:
- Я пробовал вложенную ссылку (два раза @{})
- Я неправильно процитировал вложенные двойные кавычки
Итак, вот решение:
{
"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'],'"','\"')