使用JOLT在JSON中进行日期字段转换将日期“ 1118083350”转换为日期:18/11/2020和时间:053350

问题描述

下面是我的输入

[
  {
    "corrId": "ed1e30","payloadFormat": "CASH","payload": {
      "DateTime": "1118083350"         
    }
  },{
    "correlationId": "ed1e30c","payloadFormat": "CREDIT","payload": {
     "DateTime": "1119092545"
    }
  }
]

预期输出应为

[
  {
    "correlationId": "ed1e30","Date": "18/11/2020","Time": "083350"
          
    
  },"Date": "19/11/2020","Time": "092545"
    
      
    }
  }
]

解决方法

Jolt没有日期实用程序,但是可以通过modify-default-beta操作来完成,

[
  {
    "operation": "modify-default-beta","spec": {
      "*": {
        "Time": "=substring(@(1,payload.DateTime),4,10)","month": "=substring(@(1,2)","day": "=substring(@(1,2,4)"
      }
    }
  },{
    "operation": "modify-default-beta","spec": {
      "*": {
        "Date": "=concat(@(1,day),'/',@(1,month),'/2020')"
      }
    }
  },{
    "operation": "remove","spec": {
      "*": {
        "payload": "","month": "","day": "","DateTime": ""
      }
    }
  }
]
,

我已使用以下JOLT规范转换日期。

[{
    "operation": "shift","spec": {
          "*": {
            "@": "&","payload": {
              "DateTime": "&2.payload.TMPDE"
            }
          }
        }
      },{
        "operation": "modify-default-beta","spec": {
          "*": {
            "payload": {
              "DateM": "=substring(@(1,TMPDE),"DateD": "=substring(@(1,4)","Time": "=substring(@(1,"TrnDate": "=join('/',DateD),DateM),2020)"
            }
          }
        }
      },{
        "operation": "shift","spec": {
          "*": {
            "correlationId": "[&1].COR_REL_ID","payloadFormat": "[&1].payloadFormat","payload": {
              "@TrnDate": "[#3].Date","@Time": "[#3].Time"
            }
          }
        }
    }
    ]