JOLT 转换 - 枢轴

JOLT Transformation - Pivot

我正在尝试转换以下内容JSON

[
  {
    "name": "Buy",
    "List": [
      {
        "x": "7/8/2021",
        "y": 462853
      },
      {
        "x": "7/9/2021",
        "y": 462777
      },
      {
        "x": "7/10/2021",
        "y": 462701
      }
    ]
  },
  {
    "name": "Statistical",
    "List": [
      {
        "x": "7/8/2021",
        "y": 462853
      },
      {
        "x": "7/9/2021",
        "y": 462777
      },
      {
        "x": "7/10/2021",
        "y": 462701
      }
    ]
  },
  {
    "name": "Sell",
    "List": [
      {
        "x": "7/8/2021",
        "y": 462853
      },
      {
        "x": "7/9/2021",
        "y": 462777
      },
      {
        "x": "7/10/2021",
        "y": 462701
      }
    ]
  }
]

使用 JOLT 进行更简单的操作:

[
  {
     "Date": "7/8/2021",
     "Buy": 462853,
     "Statistical": 462853,
     "Sell": 462853
  },
  {
     "Date": "7/9/2021",
     "Buy": 462777,
     "Statistical": 462777,
     "Sell": 462777
  },
  {
     "Date": "7/10/2021",
     "Buy": 462701,
     "Statistical": 462701,
     "Sell": 462701
  }
]

我尝试了很多 jolt 代码,但我不知道如何完成最后一部分。 我写了一些像这样的颠簸转换:

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "List": {
          "*": {
            "@(2,name)": "[&(3)].&1.name",
            "x": "[&(3)].&1.Date",
            "y": "[&(3)].&1.NAV"
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": {
        "*": "[]"
      }
    }
  }
]

但我不知道如何完成最后一部分来旋转名称列​​。名称列的值应根据 NAV 值进行调整。

您可以在 shift 转换中通过 x 值累积 name 键的键值对,如 Date 键所表示,然后通过使用 cardinality 转换(例如

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "List": {
          "*": {
            "x": "[&1].Date",
            "y": "[&1].@(3,name)"
          }
        }
      }
    }
  },
  {
    "operation": "cardinality",
    "spec": {
      "*": {
        "Date": "ONE"
      }
    }
  }
]