使用不同键上的条件进行 JOLT 转换

问题描述 投票:0回答:1

我是 JOLT Transformation 的新手,您能帮我完成以下工作吗?

我有一个以下格式的输入 JSON。

我的要求是检查“playBot”中的“id”是否为 PROGRAM ,然后在“header”中包含“billID”:“1800-A”。 如果“id”不是 PROGRAM(除了 PROGRAM 之外的任何其他值),则不要包含 billID。

输入:

{
  "playBot" : {
    "id" : "PROGRAM",
    "source" : "TestUser",
    "dateTime" : "01-09-2024 13:24:42"
  },
  "header" : {
    "activityID" : "4100",
    "memberID" : "User-ABC",
    "billID" : "1800-A"
  }
}

期望的输出:

{
  "playBot" : {
    "id" : "PROGRAM",
    "source" : "TestUser",
    "dateTime" : "01-09-2024 13:24:42"
  },
  "header" : {
    "activityID" : "4100",
    "memberID" : "User-ABC",
    "billID" : "1800-A"
  }
}

期望的输出:

{
  "playBot" : {
    "id" : "TEST",
    "source" : "TestUser",
    "dateTime" : "01-09-2024 13:24:42"
  },
  "header" : {
    "activityID" : "4100",
    "memberID" : "User-ABC"
  }
}
jolt
1个回答
0
投票

您可以使用此 shift 转换规范,其中包括从节点开始的行中的条件逻辑

"header"

[
  {
    "operation": "shift",
    "spec": {
      "p*": "&", // "playBot" object
      "header": {
        "@1,playBot.id": {
          "PROGRAM": {
            "@2,billID": "&2.billID"
          },
          "*": "" // else case in order to vanish attribute "billID"
        },
        "a*|m*": "&1.&"
      }
    }
  }
]
© www.soinside.com 2019 - 2024. All rights reserved.