#azure-logic-apps
#azure-logic-apps
Вопрос:
Используя приложения Azure Logic, я пытаюсь преобразовать массив JSON в объект JSON. Например, если у меня есть массив в виде:
[
{
name: 'john'
id: '1'
},
{
name: 'sarah'
id: '2'
},
]
Я хотел бы иметь в качестве выходных данных:
{
'1': 'john',
'2': 'sarah'
}
Комментарии:
1. Попробуйте использовать соединитель «Parse JSON» для анализа вашего массива JSON — [ { имя: ‘john’ id: ‘1’}, { имя: ‘sarah’ id: ‘2’}, ]. Инициализируйте пустую ([]) переменную типа «Массив» с именем «x». Затем используйте соединитель «Для каждого» в сгенерированном «выводе Parse JSON». Внутри foreach используйте «Добавить к переменной массива» на «x», чтобы добавить свой пользовательский вывод — {‘1’: ‘john’, ‘2’: ‘sarah’}. Дайте мне знать, если это сработает.
Ответ №1:
Первый результат инициализации Json:
Затем в foreach lopp (testArray — это наш массив с данными) добавьте compose с выражением "addProperty(variables('JsonResult'),item()?['id'],item()?['name'])"
и установите переменную с выводом из compose:
Код для LA:
{
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"actions": {
"For_each": {
"actions": {
"Add_property": {
"inputs": "@addProperty(variables('JsonResult'),item()?['id'],item()?['name'])",
"runAfter": {},
"type": "Compose"
},
"Set_variable": {
"inputs": {
"name": "JsonResult",
"value": "@outputs('Add_property')"
},
"runAfter": {
"Add_property": [
"Succeeded"
]
},
"type": "SetVariable"
}
},
"foreach": "@variables('TestArray')",
"runAfter": {
"Init_Json_Result": [
"Succeeded"
]
},
"runtimeConfiguration": {
"concurrency": {
"repetitions": 1
}
},
"type": "Foreach"
},
"Init_Array": {
"inputs": {
"variables": [
{
"name": "TestArray",
"type": "array",
"value": [
{
"id": "1",
"name": "john"
},
{
"id": "2",
"name": "sarah"
}
]
}
]
},
"runAfter": {},
"type": "InitializeVariable"
},
"Init_Json_Result": {
"inputs": {
"variables": [
{
"name": "JsonResult",
"type": "object",
"value": {}
}
]
},
"runAfter": {
"Init_Array": [
"Succeeded"
]
},
"type": "InitializeVariable"
},
"Test_result": {
"inputs": "@variables('JsonResult')",
"runAfter": {
"For_each": [
"Succeeded"
]
},
"type": "Compose"
}
},
"contentVersion": "1.0.0.0",
"outputs": {},
"parameters": {},
"triggers": {
"manual": {
"inputs": {
"schema": {}
},
"kind": "Http",
"type": "Request"
}
}
},
"parameters": {}
}
Комментарии:
1. Отлично, это то, что мне нужно
Ответ №2:
Как упоминалось в комментариях выше, публикуя это как ответ. Для достижения этой цели вы можете выполнить следующие шаги:
-
Просто для тестирования потока добавьте инициализировать переменную action:
-
Затем используйте для каждого элемента управления, а внутри него вы можете использовать действие Добавить к переменной массива:
Теперь вы можете использовать output
переменную, которая содержит ваш результирующий массив.
JSON-код для этого приложения Logic:
{
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"actions": {
"For_each": {
"actions": {
"Append_to_array_variable": {
"inputs": {
"name": "output",
"value": {
"@{items('For_each')['id']}": "@{items('For_each')['name']}"
}
},
"runAfter": {},
"type": "AppendToArrayVariable"
}
},
"foreach": "@body('Parse_JSON')",
"runAfter": {
"Initialize_variable": [
"Succeeded"
]
},
"type": "Foreach"
},
"HTTP": {
"inputs": {
"body": "@variables('output')",
"method": "POST",
"uri": "https://prod-33.westeurope.logic.azure.com:443/workflows/a656267dd18d46d2aa21e79e4012ba29/triggers/manual/paths/invoke?api-version=2016-10-01amp;sp=/triggers/manual/runamp;sv=1.0amp;sig=eBgZCaKgCDWiMWjm7JGNNb1-QyXbnT5AlVgBQt1GF48"
},
"runAfter": {
"For_each": [
"Succeeded"
]
},
"type": "Http"
},
"Initialize_variable": {
"inputs": {
"variables": [
{
"name": "output",
"type": "array",
"value": []
}
]
},
"runAfter": {
"Parse_JSON": [
"Succeeded"
]
},
"type": "InitializeVariable"
},
"Initialize_variable_2": {
"inputs": {
"variables": [
{
"name": "input",
"type": "array",
"value": [
{
"id": "1",
"name": "john"
},
{
"id": "2",
"name": "sarah"
}
]
}
]
},
"runAfter": {},
"type": "InitializeVariable"
},
"Parse_JSON": {
"inputs": {
"content": "@variables('input')",
"schema": {
"items": {
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
}
},
"required": [
"name",
"id"
],
"type": "object"
},
"type": "array"
}
},
"runAfter": {
"Initialize_variable_2": [
"Succeeded"
]
},
"type": "ParseJson"
}
},
"contentVersion": "1.0.0.0",
"outputs": {},
"parameters": {},
"triggers": {
"manual": {
"inputs": {
"schema": {}
},
"kind": "Http",
"type": "Request"
}
}
},
"parameters": {}
}
Комментарии:
1. на выходе будет объект, а не массив, хотя
2. Вывод — это переменная массива, и она будет содержать массив этих пользовательских объектов.
3. Я также обновил фрагменты, которые показывают значение выходной переменной.