需要使用JOLT sepc将日期(12)转换为YYYY-MM-DD hh:MM:ss



下面是输入的json

[
{
"correlationId": "12345",
"payloadFormat": "Money",
"payload": {      
"transactionDate": "2018010118060"      
"name": "Dallas"      
}
},
{
"correlationId": "67895",
"payloadFormat": "cash",
"payload": {      
"transactionDate": "2018010128040"      
"name": "Texas"

}
}
]

以下是预期输出

[
{
"correlationId": "12345",
"payloadFormat": "Money",
"payload": {      
"transactionDate": "date should be in yyyy-MM-dd HH:mm:ss"      
"name": "Dallas"      
}
},
{
"correlationId": "67895",
"payloadFormat": "cash",
"payload": {      
"transactionDate": "date should be in yyyy-MM-dd HH:mm:ss"      
"name": "Texas"

}
}
]

提供的输入中的transactionDates字符串似乎格式错误/不一致(长度不同,缺少秒数,请参阅答案末尾的第3条注释(。

输入略有修改:

[
{
"correlationId": "12345",
"payloadFormat": "Money",
"payload": {
"transactionDate": "201801011806012",
"name": "Dallas"
}
},
{
"correlationId": "67895",
"payloadFormat": "cash",
"payload": {
"transactionDate": "20180101084014",
"name": "Texas"
}
}
]

规范

[
{
"operation": "modify-default-beta",
"spec": {
"*": {
"year": "=substring(@(1,payload.transactionDate),0,4)",
"month": "=substring(@(1,payload.transactionDate),4,6)",
"day": "=substring(@(1,payload.transactionDate),6,8)",
"hour": "=substring(@(1,payload.transactionDate),8,10)",
"minute": "=substring(@(1,payload.transactionDate),10,12)",
"second": "=substring(@(1,payload.transactionDate),12,14)"
}
}
},
{
"operation": "modify-overwrite-beta",
"spec": {
"*": {
"payload": {
"transactionDate": "=concat(@(2,year),'-',@(2,month),'-',@(2,day),' ',@(2,hour),':',@(2,minute),':',@(2,second))"
}
}
}
},
{
"operation": "remove",
"spec": {
"*": {
"year": "",
"month": "",
"day": "",
"hour": "",
"minute": "",
"second": ""
}
}
}
]

我们的输出如下:

[ {
"correlationId" : "12345",
"payloadFormat" : "Money",
"payload" : {
"transactionDate" : "2018-01-01 18:06:01",
"name" : "Dallas"
}
}, {
"correlationId" : "67895",
"payloadFormat" : "cash",
"payload" : {
"transactionDate" : "2018-01-01 08:40:14",
"name" : "Texas"
}
} ]

注:

  1. 用https://jolt-demo.appspot.com
  2. 看看上面规范中使用的修改默认beta操作的用法示例
  3. 如果文章标题中date(12)中的12表示transactionDate的长度,那么你可能指的是date(14):(4+2+2+2+2,意思是:年+月+日+小时+分+秒(

最新更新