【问题标题】:With JOLT need to Transform JSON object with If Then Else Condition使用 JOLT 需要使用 If Then Else 条件转换 JSON 对象
【发布时间】:2021-03-18 18:11:18
【问题描述】:

下面是我的输入 Json

[
  {
    "correlationId": "12345",
    "payloadFormat": "Money",
    "payload": {
      "DE35": "123654ABC54678",
      "DE45": "898454PQR54678"
    }
  }
]

如果DE35具有子字符串6-9的值,我需要以这种方式转换这个json,然后在Transform Json中取DE35值,如果DE35没有值,则在transform Json中取DE45值。

所以如果 DE35 可用则输出将是

[ {
  "COR_ID" : "12345",
  "payloadFormat" : "Money",
  "EXT_SERV_CD":"ABC"
} ]

如果 DE35 不可用,那么输出应该是

[ {
  "COR_ID" : "12345",
  "payloadFormat" : "Money",
  "EXT_SERV_CD":"PQR"
} ]

我正在使用低于 JOLT 规范进行转换,但它不起作用。

[
  {
    "operation": "shift",
    "spec": {
      "*": {
        "@": "&",
        "payload": {
          "DE|DE35": "&2.payload.TMPDE35"
        }
      }
    }
  }, {
    "operation": "modify-default-beta",
    "spec": {
      "*": {
        "payload": {
          "DE35Val": "=substring(@(1,TMPDE35), 6, 9)"
        }
      }
    }
  },

  {
    "operation": "shift",
    "spec": {
      "*": {
        "@": "&",
        "payload": {
          "DE|DE45": "&2.payload.TMPDE45"
        }
      }
    }
  }, {
    "operation": "modify-default-beta",
    "spec": {
      "*": {
        "payload": {
          "DE45Val": "=substring(@(1,TMPDE45), 6, 9)"
        }
      }
    }
  },

  {
    "operation": "shift",
    "spec": {
      "*": {
        "correlationId": "[&1].COR_ID",
        "payloadFormat": "[&1].payloadFormat",
        "payload": {
          "DE35Val": {
            "ABC": {
              "DE35Val": "[#3].payload.EXT_SERV_CD"
            },
            "false": {
              "DE45Val": "[#3].payload.EXT_SERV_CD"
            }
          }
        }
      }
    }
  }
]

请指出我在哪里犯了错误。

【问题讨论】:

    标签: json jolt


    【解决方案1】:

    这个规范应该适合你

    [
      {
        "operation": "modify-default-beta",
        "spec": {
          "*": {
            "TmpDE35": "=substring(@(1,payload.DE35), 6, 9)",
            "TmpDE45": "=substring(@(1,payload.DE45), 6, 9)"
          }
        }
      },
      {
        "operation": "modify-default-beta",
        "spec": {
          "*": {
            "Tmp35_45": "=concat(@(1,TmpDE35), @(1,TmpDE45))"
          }
        }
      },
      {
        "operation": "modify-default-beta",
        "spec": {
          "*": {
            "EXT_SERV_CD": "=substring(@(1,Tmp35_45), 0, 3)"
          }
        }
      },
      {
        "operation": "shift",
        "spec": {
          "*": {
            "*": "[&1].&",
            "Tmp*": null,
            "payload": null
          }
        }
      }
    ]
    
    

    解决思路:

    1. DE35DE45字段的子字符串移动到TmpDE35TmpDE45
    2. 连接TmpDE35TMPDE45并将其存储在Tmp35_45中。如果 TmpE35 为空,则前 3 个字符将来自 TmpDE45
    3. 获取子字符串Tmp35_45
    4. 清理,换班

    【讨论】:

    • 你是 gr8 Kasptom,太棒了,这是我正在寻找和想念的解决方案,再次为快速支持提供了很多帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-03
    • 2021-10-05
    • 2023-03-22
    • 1970-01-01
    相关资源
    最近更新 更多