用 JOLT 匹配 JSON 个数组

Match JSON arrays with JOLT

我有 JSON 来自 REST API:

{
  "fields": [
    "advertiser_id",
    "campaign_id",
    "day"
  ],
  "data": [
    [
      "8905",
      "234870",
      "2021-09-28"
    ],
    [
      "5634",
      "88467870",
      "2021-09-28"
    ]
  ]
}

我想将 fields 数组中的值与 data 中的值进行匹配。有相同的顺序。所以我希望得到:

[
  {
    "advertiser_id": "8905",
    "campaign_id": "234870",
    "day": "2021-09-28"
  },
  {
    "advertiser_id": "5634",
    "campaign_id": "88467870",
    "day": "2021-09-28"
  }
]

有什么方法可以用 JOLT 实现吗?

您可以使用移位转换规范,其中

  • 向上 4 层(遍历一次:{ 三次)以达到 使用 [&1]

    选择 data 数组的 sub-arrays 字段数组
  • 通过使用[&2].节点

    消除所有返回的key-value对

比如

[
  {
    "operation": "shift",
    "spec": {
      "data": {
        "*": {
          "*": {
            "@": "[&2].@(4,fields[&1])"
          }
        }
      }
    }
  }
]

站点 http://jolt-demo.appspot.com/ 上的演示是