如何在逻辑应用程序中遍历数组?

时间:2019-12-13 13:58:11

标签: arrays json azure-logic-apps power-automate

我设法将所有用户数据存储在一个数组中(请参阅here),但是现在我无法遍历数据。构建数组后,我已将其转换为JSON,但是我无法再按照JSON模式中定义的字段进行寻址。

我在循环中唯一能解决的问题(我使用JSON正文作为For Each循环的输入)是正文本身,而不是诸如用户名,邮件地址等单个字段。

我应该更改JSON模式中的某些内容以解决此问题还是其他错误?

编辑:请在下面找到我的JSON模式:

   {
       "$schema": "http://json-schema.org/draft-04/schema#",
       "items": [
           {
               "properties": {
                   "@@odata.type": {
                       "type": "string"
                   },
                   "createdDateTime": {
                       "type": "string"
                   },
                   "employeeId": {
                       "type": "string"
                   },
                   "givenName": {
                       "type": "string"
                   },
                   "id": {
                       "type": "string"
                   },
                   "mail": {
                       "type": "string"
                   },
                   "onPremisesSamAccountName": {
                       "type": "string"
                   },
                   "surname": {
                       "type": "string"
                   },
                   "userPrincipalName": {
                       "type": "string"
                   }
               },
               "required": [
                   "@@odata.type",
                   "id",
                   "givenName",
                   "surname",
                   "userPrincipalName",
                   "mail",
                   "onPremisesSamAccountName",
                   "employeeId",
                   "createdDateTime"
               ],
               "type": "object"
           }
       ],
       "type": "array"
   }

请查看该图片以了解JSON的外观:

JSON Schema

1 个答案:

答案 0 :(得分:1)

据我了解,您只想循环数组以获取每个项目的名称,邮件和其他一些字段。正如您在问题中提到的那样,您可以将json主体用作For Each循环的输入。没关系,无需再做任何其他事情。请参考以下屏幕截图:

  1. 初始化一个变量,例如json数据。 enter image description here

  2. 然后通过“解析JSON”操作对其进行解析。 enter image description here

  3. 现在,将主体设置为For each循环的输入,然后使用一个变量,并使用“ Parse JSON”中的“ mail”设置值。 enter image description here

  4. 运行逻辑应用程序后,我们可以看到邮件字段也已循环。您可以轻松地在“每个”中使用“邮件”,“名称”和其他字段。 enter image description here enter image description here

更新

我检查了您的json模式,但似乎与您在屏幕截图中提供的json数据不匹配。我想知道您是如何生成json模式的,而在我这边,只需单击“ 使用示例有效负载生成模式”按钮即可生成json模式,它将自动生成模式。 enter image description here

我使用与您的结构相同的json数据示例并生成其架构,请参阅以下json数据和架构:

json数据:

{
    "body": [
        {
            "@odata.type": "test",
            "id": "123456",
            "givenName": "test",
            "username": "test",
            "userPrincipalName": "test",
            "mail": "test@mail.com",
            "onPremisesSamAccountName": "test",
            "employeeId": "test",
            "createdDateTime": "testdate"
        },
        {
            "@odata.type": "test",
            "id": "123456",
            "givenName": "test",
            "username": "test",
            "userPrincipalName": "test",
            "mail": "test@mail.com",
            "onPremisesSamAccountName": "test",
            "employeeId": "test",
            "createdDateTime": "testdate"
        }
    ]
}

模式:

{
    "type": "object",
    "properties": {
        "body": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "@@odata.type": {
                        "type": "string"
                    },
                    "id": {
                        "type": "string"
                    },
                    "givenName": {
                        "type": "string"
                    },
                    "username": {
                        "type": "string"
                    },
                    "userPrincipalName": {
                        "type": "string"
                    },
                    "mail": {
                        "type": "string"
                    },
                    "onPremisesSamAccountName": {
                        "type": "string"
                    },
                    "employeeId": {
                        "type": "string"
                    },
                    "createdDateTime": {
                        "type": "string"
                    }
                },
                "required": [
                    "@@odata.type",
                    "id",
                    "givenName",
                    "username",
                    "userPrincipalName",
                    "mail",
                    "onPremisesSamAccountName",
                    "employeeId",
                    "createdDateTime"
                ]
            }
        }
    }
}