我在 Azure Logic App 中使用活動有以下 json 輸出結構Parse JSON:
[
{ "name": "John",
"working days":['monday', 'tuesday', 'friday'],
"starting hour": ['8 A.M'., '7 A.M', '8 A.M.']
},
{ "name": "Carl",
"working days":['monday', 'tuesday'],
"starting hour": ['6 A.M'., '6 A.M']
},
{ "name": "Claire",
"working days":['monday', 'wednesday', 'friday'],
"starting hour": ['8 A.M'., '6 A.M', '9 A.M.']
},
{ "name": "Lisa",
"working days":['monday', 'thursday','saturday'],
"starting hour": ['8 A.M'., '7 A.M', '8 A.M.']
}
]
我想遍歷每個用戶并添加一個條件,其中"working days"equalstuesday應回傳匹配的"starting hour". 例如早上 7 點(約翰)和早上 6 點(卡爾)。
我已經在For EachActivity 之后添加了一個 ActivityParse JSON來遍歷 json 以獲取每個人,For Each之后添加了另一個 Activity 來遍歷working days. 然后我添加了一個Condition, 來匹配是否是星期二。如果是,則回傳“true”作為布林值。但是我怎樣才能讓它回傳匹配starting hour呢?
也許圖片有助于形象化。下面,working days只是tuesday填空題。

謝謝和最好的問候!
編輯:陣列中相同數量的值,洗掉錯誤放置的引號
uj5u.com熱心網友回復:
很難讓您了解我對您問題的全部回答,但這是我的邏輯應用程式的 JSON 定義(您可以將其加載到您自己的租戶中進行測驗并查看它是如何作業的),它將為您提供我將采取的方法...
{
"definition": {
"$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
"actions": {
"For_Each_Name": {
"actions": {
"Reset_Starting_Hour": {
"inputs": {
"name": "Starting Hour",
"value": "@{string('')}"
},
"runAfter": {
"Set_Index_=_0": [
"Succeeded"
]
},
"type": "SetVariable"
},
"Set_Index_=_0": {
"inputs": {
"name": "Index",
"value": 0
},
"runAfter": {
"Set_Working_Days_Array_Length": [
"Succeeded"
]
},
"type": "SetVariable"
},
"Set_Working_Days_Array_Length": {
"inputs": {
"name": "Working Days Array Length",
"value": "@length(items('For_Each_Name')?['working days'])"
},
"runAfter": {},
"type": "SetVariable"
},
"Until_Index_=_Working_Days_Array_Length": {
"actions": {
"Condition": {
"actions": {
"Set_Starting_Hour": {
"inputs": {
"name": "Starting Hour",
"value": "@{items('For_Each_Name')?['starting hour'][variables('Index')]}"
},
"runAfter": {},
"type": "SetVariable"
}
},
"expression": {
"and": [
{
"equals": [
"@items('For_Each_Name')?['working days'][variables('Index')]",
"tuesday"
]
}
]
},
"runAfter": {},
"type": "If"
},
"Increment_Index": {
"inputs": {
"name": "Index",
"value": 1
},
"runAfter": {
"Condition": [
"Succeeded"
]
},
"type": "IncrementVariable"
}
},
"expression": "@equals(variables('Index'), variables('Working Days Array Length'))",
"limit": {
"count": 10,
"timeout": "PT1H"
},
"runAfter": {
"Reset_Starting_Hour": [
"Succeeded"
]
},
"type": "Until"
}
},
"foreach": "@body('Parse_JSON')",
"runAfter": {
"Initialize_Index": [
"Succeeded"
]
},
"runtimeConfiguration": {
"concurrency": {
"repetitions": 1
}
},
"type": "Foreach"
},
"Initialize_Index": {
"inputs": {
"variables": [
{
"name": "Index",
"type": "integer"
}
]
},
"runAfter": {
"Initialize_Starting_Hour": [
"Succeeded"
]
},
"type": "InitializeVariable"
},
"Initialize_Starting_Hour": {
"inputs": {
"variables": [
{
"name": "Starting Hour",
"type": "string"
}
]
},
"runAfter": {
"Initialize_Working_Days_Array_Length": [
"Succeeded"
]
},
"type": "InitializeVariable"
},
"Initialize_Working_Days_Array_Length": {
"inputs": {
"variables": [
{
"name": "Working Days Array Length",
"type": "integer"
}
]
},
"runAfter": {
"Parse_JSON": [
"Succeeded"
]
},
"type": "InitializeVariable"
},
"Parse_JSON": {
"inputs": {
"content": [
{
"name": "John",
"starting hour": [
"8 A.M.",
"7 A.M.",
"8 A.M."
],
"working days": [
"monday",
"tuesday",
"friday"
]
},
{
"name": "Carl",
"starting hour": [
"6 A.M.",
"6 A.M."
],
"working days": [
"monday",
"tuesday"
]
},
{
"name": "Claire",
"starting hour": [
"8 A.M.",
"6 A.M.",
"9 A.M"
],
"working days": [
"monday",
"wednesday",
"friday"
]
},
{
"name": "Lisa",
"starting hour": [
"8 A.M.",
"7 A.M.",
"8 A.M."
],
"working days": [
"monday",
"thursday",
"saturday"
]
}
],
"schema": {
"items": {
"properties": {
"name": {
"type": "string"
},
"starting hour": {
"items": {
"type": "string"
},
"type": "array"
},
"working days": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"name",
"working days",
"starting hour"
],
"type": "object"
},
"type": "array"
}
},
"runAfter": {},
"type": "ParseJson"
}
},
"contentVersion": "1.0.0.0",
"outputs": {},
"parameters": {},
"triggers": {
"Recurrence": {
"evaluatedRecurrence": {
"frequency": "Month",
"interval": 12
},
"recurrence": {
"frequency": "Month",
"interval": 12
},
"type": "Recurrence"
}
}
},
"parameters": {}
}
我的回答的前提是確定每個陣列中有多少專案,working days然后從那里回圈遍歷(一直遞增索引變數),如果發現星期二是作業日,它將獲得相關的開始時間來自同一個索引的值。
注意:每個陣列的長度應相同,否則可能會出現問題。
還需要指出的一件事是,這僅在For Each Name操作將其并發設定為 1 時才有效...

如果您不知道它在哪里,您可以在操作本身的設定中找到它。
uj5u.com熱心網友回復:
這是一個在考慮大局時可行的替代方案,我們已經初始化了 3 個變數,一個用于在until動作內部回圈,一個用于獲取索引,一個用于存盤最終陣列。

然后我使用直到在每個回圈內部回圈。

這是我的陣列物件操作,其中 Index 為您提供當前真實值的索引,以便您可以獲得開始時間和作業日的值。
{
"name": "@{items('For_each')['name']}",
"starting hour": @{items('For_each')['starting hour'][variables('Index')]},
"working days": @{items('For_each')['working days'][variables('Index')]}
}
然后在直到回圈中,我將索引值設定為當前迭代次數。

最后我正在列印最終的陣列值

結果:
案例 - 1:字串('星期二')

案例 - 2:字串('星期五')

轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/468970.html
