Jolt 分组和创建数组

Jolt grouping and creating array

希望你们一切都好。

我是 jolt 世界的新手,今天才开始研究。我很难将我的 json 结果转换为我应该发送的格式。

这是我得到的示例:

[
  {
    "un": "RBA335",
    "uf": "ES",
    "city": "Cariacica",
    "d0": 1,
    "day": "Mon",
    "dzero": 1,
    "Active": 1
  },
  {
    "un": "RBA335",
    "uf": "ES",
    "city": "Cariacica",
    "d0": 1,
    "day": "Tue",
    "dzero": 1,
    "Active": 1
  },
  {
    "un": "RBA335",
    "uf": "ES",
    "city": "Cariacica",
    "d0": 1,
    "day": "Wed",
    "dzero": 1,
    "Active": 1
  },
  {
    "un": "RBA335",
    "uf": "ES",
    "city": "Cariacica",
    "d0": 1,
    "day": "Thu",
    "dzero": 1,
    "Active": 1
  },
  {
    "un": "RBA335",
    "uf": "ES",
    "city": "Cariacica",
    "d0": 1,
    "day": "Fri",
    "dzero": 1,
    "Active": 1
  },
  {
    "un": "RBA335",
    "uf": "ES",
    "city": "Cariacica",
    "d0": 0,
    "day": "Sat",
    "dzero": 0,
    "Active": 0
  },
  {
    "un": "RBA335",
    "uf": "ES",
    "city": "Cariacica",
    "d0": 0,
    "day": "Sun",
    "dzero": 0,
    "Active": 0
  },
  {
    "un": "RBA335",
    "uf": "ES",
    "city": "Vitoria",
    "d0": 1,
    "day": "Mon",
    "dzero": 1,
    "Active": 1
  },
  {
    "un": "RBA335",
    "uf": "ES",
    "city": "Vitoria",
    "d0": 1,
    "day": "Tue",
    "dzero": 1,
    "Active": 1
  },
  {
    "un": "RBA335",
    "uf": "ES",
    "city": "Vitoria",
    "d0": 1,
    "day": "Wed",
    "dzero": 1,
    "Active": 1
  },
  {
    "un": "RBA335",
    "uf": "ES",
    "city": "Vitoria",
    "d0": 1,
    "day": "Thu",
    "dzero": 1,
    "Active": 1
  },
  {
    "un": "RBA335",
    "uf": "ES",
    "city": "Vitoria",
    "d0": 1,
    "day": "Fri",
    "dzero": 1,
    "Active": 1
  },
  {
    "un": "RBA335",
    "uf": "ES",
    "city": "Vitoria",
    "d0": 0,
    "day": "Sat",
    "dzero": 0,
    "Active": 0
  },
  {
    "un": "RBA335",
    "uf": "ES",
    "city": "Vitoria",
    "d0": 0,
    "day": "Sun",
    "dzero": 0,
    "Active": 0
  }
]

我需要根据“un”、“uf”、“city”和“d0”的组合进行分组,并根据它们创建一个名为“windows”的数组其余字段(“day”、“dzero”、“Active”)。 如前所述,我的预期结果如下:

[
  {
    "un": "RBA335",
    "uf": "ES",
    "city": "Cariacica",
    "d0": 1,
    "windows": [
      {
        "day": "Mon",
        "dzero": 1,
        "active": 1
      },
      {
        "day": "Tue",
        "dzero": 1,
        "active": 1
      },
      {
        "day": "Wed",
        "dzero": 1,
        "active": 1
      },
      {
        "day": "Thu",
        "dzero": 1,
        "active": 1
      },
      {
        "day": "Fri",
        "dzero": 1,
        "active": 1
      },
      {
        "day": "Sat",
        "dzero": 0,
        "active": 0
      },
      {
        "day": "Sun",
        "dzero": 0,
        "active": 0
      }
    ]
  },
  {
    "un": "RBA335",
    "uf": "ES",
    "city": "Vitória",
    "d0": 0,
    "windows": [
      {
        "day": "Mon",
        "dzero": 0,
        "active": 1
      },
      {
        "day": "Tue",
        "dzero": 1,
        "active": 1
      },
      {
        "day": "Wed",
        "dzero": 0,
        "active": 1
      },
      {
        "day": "Thu",
        "dzero": 1,
        "active": 1
      },
      {
        "day": "Fri",
        "dzero": 1,
        "active": 1
      },
      {
        "day": "Sat",
        "dzero": 0,
        "active": 0
      },
      {
        "day": "Sun",
        "dzero": 0,
        "active": 0
      }
    ]
  }
]

如果可以的话,真的帮大忙了。

先谢谢你了!

尝试以下使用此方法的规范:

  1. 创建复合键并将其添加到每个元素
  2. 将具有相同复合键的所有元素移动到一个 key/value 对中,其中键是复合键,值是具有该复合键值的元素数组。
  3. 对于每个数组中的第一个元素,将公共字段提升到每个元素之外(复合键字段除外)。对于数组中的每个元素,将 day、dzero 和 active 字段向下推入“windows”数组。
  4. 将每个复合键对象的每个元素放入一个通用的顶级数组中。

.

[
  {
    "operation": "modify-overwrite-beta",
    "spec": {
      "*": {
        "compound": "=concat(@(1,un),' ',@(1,uf),' ',@(1,city),' ',@(1,d0))"
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": "@compound[]"
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "0": {
          "day": "&2.windows[0].day",
          "dzero": "&2.windows[0].dzero",
          "Active": "&2.windows[0].active",
          "compound": null,
          "*": "&2.&"
        },
        "*": {
          "day": "&2.windows[&1].day",
          "dzero": "&2.windows[&1].dzero",
          "Active": "&2.windows[&1].active"
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": "[]"
    }
  }
]