在JSON数组中获取具有特定ID的第一个JSON元素-Microsoft Flow

时间:2018-11-05 07:00:05

标签: json microsoft-flow

我有一个具有以下架构的JSON解析操作:

{
    "type": "object",
    "properties": {
        "employees": {
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string"
                    },
                    "email": {
                        "type": "string"
                    }
                },
                "required": [
                    "id",
                    "email"
                ]
            }
        }
    }
}

示例输入的JSON字符串为:

{
  "employees": [
    {
      "id": "1111",
      "email": "email1@gmail.com"
    },
    {
      "id": "2222",
      "email": "email2@gmail.com"
    }
  ]
}

要获取员工名单,我使用:

body('Parse_JSON')?['employees']

如何获取id = 2222的员工电子邮件?

注意:如果需要,我可以更改JSON模式。

2 个答案:

答案 0 :(得分:1)

一年后,我遇到了您的问题,但是仍然没有很好的解决方法。我最终使用了Filter Array步骤(在“数据操作”下)

Filter Array

然后您可以在此处应用过滤条件。例如id = 1111

Apply filter

这仍然返回一个数组,但是我可以使用Compose操作来获取数组的first()元素。我还借此机会使用coalesce()来设置默认值(如果找不到该值):

coalesce(first(body('Filter_array')).value, 10000)

答案 1 :(得分:-1)

遍历数组和“过滤器数组”,仅保留与'id'= 2222匹配的数组项。如果列表是唯一的,则应仅包含一项。如果有多个条目,请过滤其他一些值。

创建一个变量。

然后,在过滤后的数组上循环查看,并将变量设置为数组项中的任何内容。请注意,最后一项将获胜。如果筛选出的项目不唯一且不相同,可能会导致错误。