【问题标题】:Need help to figure out how to fix a jolt spec需要帮助来确定如何修复颠簸规范
【发布时间】:2021-08-26 16:27:34
【问题描述】:

我正在尝试使用 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 需要更多的里程。

谢谢,

【问题讨论】:

    标签: json jolt


    【解决方案1】:

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

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

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

    【讨论】:

    • 非常感谢!您的解释也帮助我更深入地了解 Jolt,使其用法更加清晰。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多