I have an input JSON like this.
{
"trackingNumber": "1ZEA83550362028861",
"localActivityDate": "20210324",
"localActivityTime": "183500",
"scheduledDeliveryDate": "20220525",
"actualDeliveryDate": "20220729",
"actualdeliveryTime": "183500",
"gmtActivityDate": "20210324",
"gmtActivityTime": "223500",
"activityStatus": {
"type": "G",
"code": "OR",
"description": "Origin Scan"
},
"activityLocation": {
"city": "RANDALLSTOWN,",
"stateProvince": "MD",
"postalCode": "21133",
"country": "US"
}
}
I have written a jolt transformation for this JSON
[
{
"operation": "shift",
"spec": {
"trackingNumber": "transformedPayload.trackingInfo",
"localActivityDate": "tmp_Date",
"localActivityTime": "tmp_Time",
"scheduledDeliveryDate": "tmp_App",
"actualDeliveryDate": "tmp_Del_Date",
"actualdeliveryTime": "tmp_Del_Time",
"activityStatus": {
"type": "transformedPayload.events.type",
"code": "transformedPayload.events.statusCode",
"description": "transformedPayload.events.statusDescription"
},
"activityLocation": {
"city": "transformedPayload.address.city",
"stateProvince": "transformedPayload.address.state",
"postalCode": "transformedPayload.address.postalCode",
"country": "transformedPayload.address.country"
}
}
},
{
"operation": "modify-default-beta",
"spec": {
"tmp_Year": "=substring(@(1,tmp_Date),0,4)",
"tmp_Month": "=substring(@(1,tmp_Date),4,6)",
"tmp_Day": "=substring(@(1,tmp_Date),6,8)",
"tmp_Hours": "=substring(@(1,tmp_Time),0,2)",
"tmp_Minutes": "=substring(@(1,tmp_Time),2,4)",
"tmp_Seconds": "=substring(@(1,tmp_Time),4,6)",
"timeStamp": "=concat(@(1,tmp_Year),'-',@(1,tmp_Month),'-',@(1,tmp_Day),'T',@(1,tmp_Hours),':',@(1,tmp_Minutes),':',@(1,tmp_Seconds),'Z')",
"tmp_App_Year": "=substring(@(1,tmp_App),0,4)",
"tmp_App_Month": "=substring(@(1,tmp_App),4,6)",
"tmp_App_Day": "=substring(@(1,tmp_App),6,8)",
"appointmentTime": "=concat(@(1,tmp_App_Year),'-',@(1,tmp_App_Month),'-',@(1,tmp_App_Day))",
"tmp__Del_Year": "=substring(@(1,tmp_Del_Date),0,4)",
"tmp_Del_Month": "=substring(@(1,tmp_Del_Date),4,6)",
"tmp_Del_Day": "=substring(@(1,tmp_Del_Date),6,8)",
"tmp_Del_Hours": "=substring(@(1,tmp_Del_Time),0,2)",
"tmp_Del_Minutes": "=substring(@(1,tmp_Del_Time),2,4)",
"tmp_Del_Seconds": "=substring(@(1,tmp_Del_Time),4,6)",
"deliveryTime": "=concat(@(1,tmp__Del_Year),'-',@(1,tmp_Del_Month),'-',@(1,tmp_Del_Day),'T',@(1,tmp_Del_Hours),':',@(1,tmp_Del_Minutes),':',@(1,tmp_Del_Seconds),'Z')"
}
},
{
"operation": "remove",
"spec": {
"tmp_*": ""
}
}
]
This transforms the data into this format.
{
"transformedPayload" : {
"trackingInfo" : "1ZEA83550362028861",
"events" : {
"type" : "G",
"statusCode" : "OR",
"statusDescription" : "Origin Scan"
},
"address" : {
"city" : "RANDALLSTOWN,",
"state" : "MD",
"postalCode" : "21133",
"country" : "US"
}
},
"timeStamp" : "2021-03-24T18:35:00Z",
"appointmentTime" : "2022-05-25",
"deliveryTime" : "2022-07-29T18:35:00Z"
}
What changes do i need to make in the transformation such that the timestamp, appointmentTime and deliveryTime are also nested under transformedPayload i.e it looks like this (correct format).
{
"transformedPayload" : {
"trackingInfo" : "1ZEA83550362028861",
"events" : {
"type" : "G",
"statusCode" : "OR",
"statusDescription" : "Origin Scan"
},
"address" : {
"city" : "RANDALLSTOWN,",
"state" : "MD",
"postalCode" : "21133",
"country" : "US"
},
"timeStamp" : "2021-03-24T18:35:00Z",
"appointmentTime" : "2022-05-25",
"deliveryTime" : "2022-07-29T18:35:00Z"
}
}
This is my first time doing a jolt transformation so i am confused on how to resolve this. Any help is appreciated.
You are already so close to solution,I can offer the following spec similar to yours to the desired output :
[
{
"operation": "modify-overwrite-beta",
"spec": {
"tsY": "=substring(@(1,localActivityDate),0,4)",
"tsM": "=substring(@(1,localActivityDate),4,6)",
"tsD": "=substring(@(1,localActivityDate),6,8)",
"tsH": "=substring(@(1,localActivityTime),0,2)",
"tsMi": "=substring(@(1,localActivityTime),2,4)",
"tsS": "=substring(@(1,localActivityTime),4,6)",
"timeStamp": "=concat(@(1,tsY),'-',@(1,tsM),'-',@(1,tsD),'T',@(1,tsH),':',@(1,tsMi),':',@(1,tsS),'Z')",
"aTY": "=substring(@(1,scheduledDeliveryDate),0,4)",
"aTM": "=substring(@(1,scheduledDeliveryDate),4,6)",
"aTD": "=substring(@(1,scheduledDeliveryDate),6,8)",
"appointmentTime": "=concat(@(1,aTY),'-',@(1,aTM),'-',@(1,aTD))",
"dTY": "=substring(@(1,actualDeliveryDate),0,4)",
"dTM": "=substring(@(1,actualDeliveryDate),4,6)",
"dTD": "=substring(@(1,actualDeliveryDate),6,8)",
"dTH": "=substring(@(1,actualdeliveryTime),0,2)",
"dTMi": "=substring(@(1,actualdeliveryTime),2,4)",
"dTS": "=substring(@(1,actualdeliveryTime),4,6)",
"deliveryTime": "=concat(@(1,dTY),'-',@(1,dTM),'-',@(1,dTD),'T',@(1,dTH),':',@(1,dTMi),':',@(1,dTS),'Z')"
}
},
{
"operation": "shift",
"spec": {
"*Number": "&(0,1)Info",
"activityStatus": {
"*": "events.&"
},
"activityLocation": {
"*": "address.&"
},
"timeStamp": "&",
"appointmentTime": "&",
"deliveryTime": "&"
}
}
]