#azure #azure-logic-apps #dotliquid #azure-logic-app-standard
Вопрос:
Действие SQL-запроса выполнения приложений логики Azure возвращает вывод JSON следующим образом:
[
[
{
"ProductID": 7000,
"ProductName": "Some name"
},
...
]
]
Какой синтаксис было бы правильно использовать с DotLiquid в действии преобразования JSON в JSON приложений логики Azure для итерации по этим вложенным массивам, чтобы избавиться от вложенности, например, для создания чего-то подобного:
{
"products": [
{
"productId": 7000,
"productName": "Some name"
},
...
]
}
Ответ №1:
Поскольку вы все равно собираетесь использовать учетную запись интеграции, это преобразование можно легко выполнить с помощью действия Выполнить код JavaScript в приложении логики со следующим кодом:
var input_array = workflowContext.actions.Compose.outputs;
var output = { "products": [] };
for (let i = 0; i < input_array.length; i ) {
for (let j = 0; j < input_array[i].length; j ) {
output.products.push(input_array[i][j]);
}
}
return output;
Результат:
Комментарии:
1. Спасибо! Я понимаю, почему вы предполагаете, что я использую учетную запись интеграции, но на самом деле это не так в данном случае. Сервер SQL, к которому я обращаюсь, представляет собой базу данных SQL Azure с относительно широкими правилами брандмауэра.
2. @SvenAelterman, как вы можете не использовать учетную запись интеграции, если в своем вопросе вы упомянули «Действие преобразования JSON в JSON», которое работает только с учетной записью интеграции? docs.microsoft.com/en-us/azure/logic-apps/…
3. Интересный улов в документах. Я использую стандартное приложение логики, которое также позволяет использовать эти преобразования. Однако приложения логики плана потребления не обладают этими функциями.
Ответ №2:
После продолжительных проб и ошибок я пришел к этому решению:
{
"products": [
{% for product in content[0] %}
{
"productId": {{ product.ProductID }}
}{% unless forloop.last %},{% endunless %}
{% endfor %}
]
}