【问题标题】:need JOLT spec to transform source JSON format to desired JSON format需要 JOLT 规范将源 JSON 格式转换为所需的 JSON 格式
【发布时间】:2020-11-03 06:09:58
【问题描述】:

输入 JSON 如下 [ { “correlationId”:“12345”, "payloadFormat": "钱", “有效载荷”:{ "DE61": "000001000150084063368", “位置”:“南”, “名称”:“达拉斯”, “流行”:“2M” } }, { “correlationId”:“ed1e3”, "payloadFormat": "现金", “有效载荷”:{ “德”:“000001000150084063368”, “位置”:“西”, “名称”:“洛杉矶”, “流行”:“4M” } } ]

需要转换成如下输出信息。

[ {

"payload": {
"correlationId": "12345",
"payloadFormat": "Money",
  "DE61SF1": "00",
  "DE61SF2": "100015008",
  "DE61SF3": "4063368",
  "location": "south",
  "name": "Dallas",
  "pop": "2M"
}

}, {

"payload": {
"correlationId": "ed1e3",
 "payloadFormat": "Cash",
  "DE61SF1": "00",
  "DE61SF2": "100015008",
  "DE61SF3": "4063368",
  "location": "west",
  "name": "LosAngeles",
  "pop": "4M"
}

} ]

【问题讨论】:

    标签: jolt


    【解决方案1】:

    检查此规范,

    [
      {
        "operation": "shift",
        "spec": {
          "*": {
            "@": "&",
            // Shift all the DE nodes to a same named node.
            // Here it is moved as TMPDE
            "payload": {
              "DE|DE61": "&2.payload.TMPDE"
            }
          }
        }
      }, {
        "operation": "modify-default-beta",
        "spec": {
          "*": {
            "payload": {
              "DE61SF1": "=substring(@(1,TMPDE), 2, 4)",
              "DE61SF2": "=substring(@(1,TMPDE), 5, 14)",
              "DE61SF3": "=substring(@(1,TMPDE), 14, 21)"
            }
          }
        }
      }, {
        "operation": "shift",
        "spec": {
          "*": {
            "correlationId": "[&1].payload.correlationId",
            "payloadFormat": "[&1].payload.payloadFormat",
            "payload": {
              "DE61SF1": "[&2].payload.DE61SF1",
              "DE61SF2": "[&2].payload.DE61SF2",
              "DE61SF3": "[&2].payload.DE61SF3",
              "location": "[&2].payload.location",
              "pop": "[&2].payload.pop",
              "name": "[&2].payload.name"
            }
          }
        }
      }
    ]
    

    【讨论】:

    • 非常感谢 Jagadesh 的快速帮助,你太棒了
    • 嗨 Jagadesh,在上面的问题中,我们可以在转换 json 时删除有效负载,比如没有有效负载键表单值从 { like { "correlationId": "12345", "payloadFormat": "Money" 开始,“DE61SF1”:“00”,“DE61SF2”:“100015008”,“DE61SF3”:“4063368”,“位置”:“南”,“名称”:“达拉斯”,“流行”:“2M” }
    • 是的。你可以这样做,只需从规范中删除 .payload
    • 嗨,Jagadesh,如果在输入中我们收到较少的数据,例如“DE”:“00000100015008”,我们如何获得输出,并且我们已经为完整字符串定义了子字符串,如果我们没有收到如果我们定义了子字符串,则该元素的值应该为空。类似的输出应该是“DE61SF1”:“00”,“DE61SF2”:“100015008”,“DE61SF3”:“null”,
    猜你喜欢
    • 2021-06-07
    • 1970-01-01
    • 2022-08-04
    • 2022-01-19
    • 2014-01-05
    • 1970-01-01
    • 2020-11-03
    • 2017-10-27
    • 1970-01-01
    相关资源
    最近更新 更多