需要帮助来弄清楚如何修复颠簸规格

Need help to figure out how to fix a jolt spec

我正在尝试使用 Jolt 编写规范,我一直在努力解决它,我想要的输出是:

{
  "Team": [
    {
      "ID": "1",
      "Source": {
        "HV": 1,
        "ID": 1
      }
    },
    {
      "ID": "3",
      "Source": {
        "HV": 2,
        "ID": 3
      }
    }
  ]
}

我有以下输入:


[
  {
    "Page": 910407,
    "TimingID": 10014,
    "ScoreInfo": {
      "Inn": 9,
      "TB": 1,
      "Team": [
        {
          "HV": 1,
          "ID": 1,
          "Score": 4
        },
        {
          "HV": 2,
          "ID": 3,
          "Score": 2
        }
      ],
      "HV": null
    }
  }
]

但执行此规范后:

[
  {
    "operation": "shift",
    "spec": {
      "0": {
        "ScoreInfo": {
          "Team": {
            "*": "&"
          }
        }
      }
    }
  },
  {
    "operation": "shift",
    "spec": {
      "*": "Team.@ID.Source"
    }
  }
]

我得到了这个结果:

{
  "Team" : {
    "1" : {
      "Source" : {
        "HV" : 1,
        "ID" : 1,
        "Score" : 4
      }
    },
    "3" : {
      "Source" : {
        "HV" : 2,
        "ID" : 3,
        "Score" : 2
      }
    }
  }
}

我会帮忙弄清楚如何解决,我一直在阅读和练习,但在某些情况下仍然有一些疑问,当输出开始变得更高级时,使用 Jolt 需要多跑几英里.

谢谢,

应用一级 shift 转换就足够了,例如

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "ScoreInfo": {
          "Team": {
            "*": {
              "HV": "&2.[&1].Source.&",
              "ID": "&2.[&1].Source.&",
              "@(0,ID)": "&2.[&1].ID"
            }
          }
        }
      }
    }
  }
]

其中&2代表最外层的键名(Team),[&1]用来去掉内部数组而不是获取对象, & 叶子(最里面的&符号)代表获取当前级别的键的值,例如 HV&ID