json - Ansible 按 json 属性分组

标签 json loops group-by ansible

我有以下 json 数据。

{
    "images": [
        {
            "id": "79334504-3e48-4411-b602-afe920e32e14",
            "name": "rhel-7-factory-os-ready",
            "updated": "2019-05-07T15:51:00Z"
        },
        {
            "id": "05569058-0b47-4c05-8ce7-f09b2e32076a",
            "name": "sles-12-factory-os-ready",
            "updated": "2019-05-07T15:48:59Z"
        },
        {
            "id": "77c131bc-4dd6-4290-9dfb-89ddebc609f4",
            "name": "sles-11-factory-os-ready",
            "updated": "2019-05-07T15:45:10Z"
        },
        {
            "id": "d42b7a07-e329-46ac-82c1-28875498b145",
            "name": "rhel-6-factory-os-ready",
            "updated": "2019-05-07T15:44:54Z"
        },
        {
            "id": "d282ae55-ecc6-47a3-bb2f-4354bebf33e1",
            "name": "rhel-7-factory-base-vg00",
            "updated": "2019-05-07T15:37:25Z"
        },
        {
            "id": "0c0fb244-7553-4f20-bf3b-8e32d0527292",
            "name": "sles-12-factory-base-vg00",
            "updated": "2019-05-07T15:32:14Z"
        },
        {
            "id": "14a34117-91d5-4cbf-b039-613fd8b5ea65",
            "name": "rhel-6-factory-base-vg00",
            "updated": "2019-05-07T15:29:28Z"
        },
        {
            "id": "bf465c2d-9f4c-44a9-9cc8-ff488b79e9f6",
            "name": "rhel-7-factory-base",
            "updated": "2019-05-07T15:28:00Z"
        },
        {
            "id": "90d4e12d-6d7f-4f59-a4e6-28b1757f95bc",
            "name": "sles-11-factory-base-vg00",
            "updated": "2019-05-07T15:24:19Z"
        },
        {
            "id": "30109a53-4aab-4fb5-87ff-7650e75731b0",
            "name": "rhel-6-factory-base",
            "updated": "2019-05-07T15:20:39Z"
        },
        {
            "id": "80cd641b-bb53-46f7-b8f6-7f287507fc3c",
            "name": "sles-12-factory-base",
            "updated": "2019-05-07T15:20:10Z"
        },
        {
            "id": "dc2deb91-2ff0-4d9e-a44d-fa2d7a8e1c62",
            "name": "sles-11-factory-base",
            "updated": "2019-05-07T15:18:05Z"
        },
        {
            "id": "b6646eab-5908-4db4-a93a-1ca0ce52b76b",
            "name": "sles-11-factory-os-ready",
            "updated": "2019-05-07T14:27:41Z"
        },
        {
            "id": "850cdd08-a5a7-4e6b-a906-4fda157257b6",
            "name": "sles-12-factory-base",
            "updated": "2019-05-07T14:23:40Z"
        },
        {
            "id": "30325ffd-f17a-4db8-a2ef-a2e529163f03",
            "name": "sles-11-factory-base-vg00",
            "updated": "2019-05-07T14:08:22Z"
        },
        {
            "id": "70f49bc1-f793-4d1d-8317-e2d1d35993f7",
            "name": "rhel-6-factory-base-vg00",
            "updated": "2019-05-07T13:42:01Z"
        },
        {
            "id": "6bb77f3d-335b-459d-8aa1-dd3effd60672",
            "name": "rhel-6-factory-os-ready",
            "updated": "2019-05-07T13:40:17Z"
        },
        {
            "id": "1cbfe793-5ca5-4310-b121-e5065ffa0cf8",
            "name": "rhel-6-factory-base-vg00",
            "updated": "2019-05-07T13:25:46Z"
        },
        {
            "id": "17d0b51f-1c19-472a-9104-31624435bd63",
            "name": "rhel-7-factory-os-ready",
            "updated": "2019-05-07T13:18:55Z"
        },
        {
            "id": "4e1f6f7a-90fc-4055-9ee7-d284656fcd58",
            "name": "rhel-7-factory-base-vg00",
            "updated": "2019-05-07T12:41:21Z"
        },
        {
            "id": "7129df12-ae5b-47ff-905d-1e7bf79069cb",
            "name": "rhel-7-factory-base",
            "updated": "2019-05-07T12:31:32Z"
        },
        {
            "id": "a37ce4d3-fc3e-4ae9-8d24-038c638be629",
            "name": "rhel-6-factory-base-vg00",
            "updated": "2019-05-07T12:30:08Z"
        },
        {
            "id": "294821b3-e9df-4b12-ae39-8deb8f9c72ff",
            "name": "rhel-6-factory-base",
            "updated": "2019-05-07T12:21:36Z"
        },
        {
            "id": "520ae1ca-bb2f-4ccb-bed3-886ee39ccd5e",
            "name": "sles-11-factory-base",
            "updated": "2019-05-07T12:21:00Z"
        },
        {
            "id": "e041c0ed-c30f-4c61-a695-682e5a80026a",
            "name": "rhel-6-factory-os-ready",
            "updated": "2019-04-29T14:17:52Z"
        },
        {
            "id": "068ae5f0-d7a0-4419-829e-18eb25551c94",
            "name": "rhel-6-factory-base",
            "updated": "2019-04-29T14:04:20Z"
        },
        {
            "id": "2dfa8476-54dd-4dc5-80cc-5033466f2732",
            "name": "rhel-7-factory-base",
            "updated": "2019-04-26T13:40:59Z"
        },
        {
            "id": "61a5a77a-0e8a-47d0-938e-6202c5cc5177",
            "name": "rhel-7-factory-os-ready",
            "updated": "2019-04-26T13:40:11Z"
        },
        {
            "id": "b877f241-caa1-43c4-9465-fb5019d44f9b",
            "name": "sles-12-factory-base-vg00",
            "updated": "2019-04-26T13:45:40Z"
        },
        {
            "id": "baf4c87d-8363-48cf-ae02-be9caef4f60d",
            "name": "sles-12-factory-base",
            "updated": "2019-04-26T13:41:31Z"
        },
        {
            "id": "67a2ffa1-6591-42cb-95db-d2b1a854a78d",
            "name": "sles-11-factory-os-ready",
            "updated": "2019-04-26T10:17:26Z"
        }
    ]
}

我想按上面的 json 按名称属性进行分组,如下所示。

{
  "rhel-7-factory-os-ready" : [
      {
          "id": "79334504-3e48-4411-b602-afe920e32e14",
          "updated": "2019-05-07T15:51:00Z"
      },
      {
          "id": "17d0b51f-1c19-472a-9104-31624435bd63",
          "updated": "2019-05-07T13:18:55Z"
      },
      {
          "id": "61a5a77a-0e8a-47d0-938e-6202c5cc5177",
          "updated": "2019-04-26T13:40:11Z"
      }
   ],
   "rhel-6-factory-os-ready" : [
      {
          "id": "d42b7a07-e329-46ac-82c1-28875498b145",
          "updated": "2019-05-07T15:44:54Z"
      },
      {
          "id": "6bb77f3d-335b-459d-8aa1-dd3effd60672",
          "updated": "2019-05-07T13:40:17Z"
      },
      {
          "id": "e041c0ed-c30f-4c61-a695-682e5a80026a",
          "updated": "2019-04-29T14:17:52Z"
      }
   ]
}

我不知何故无法弄清楚如何使用 ansible 实现这一目标。如果有人能帮助我解决这个问题,那就太好了。

提前致谢, 戒律

最佳答案

事实证明,Ansible 有一个 groupby已过滤:

---
- hosts: localhost
  gather_facts: false
  tasks:
    - include_vars:
        file: data.json
        name: data

    - debug:
        var: data.images|groupby('name')

关于json - Ansible 按 json 属性分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56043358/

相关文章:

javascript - 如何调用存储在变量中的函数

Ruby 重试数组#each 循环

mysql - 两个表字段上的慢速查询 SELECT ... GROUP BY (MySQL/InnoDB)

c# - 在具有 2 个属性的 LINQ 中分组

php - 正则表达式,PHP-从复杂的 json 字符串中删除单引号、双引号和反斜杠

php - utf8_unicode_ci 的 JSON 数据的 PHP header 中的内容类型字符集 - Ajax 调用

c - 使用循环在 c 中反转字符串....

c++ - 如何以五个数字的行显示输出?

sql - 简单的 sql(我希望!)

ios - 无法使用类型为 '[[String : Any]]' 的索引下标类型为 'String' 的值