I am having some trouble with flattening the JSON. I have looked at examples and didn't get any closer as to what is mentioned above. I need to transform a JSON structure by using a JOLT spec. I use https://jolt-demo.appspot.com to test the following below.
JSON Input for a sample :
{
"metadata": {
"timestamp": "XXXXX"
},
"data": {
"product": {
"id": "XXXXX"
},
"storageLocations": [
{
"id": "XXXXX",
"stocks": [
{
"stockStatus": "XXXXX",
"quantity": [
{
"uom": "XXXXX",
"isoUom": "XXXXX",
"amount": "XXXXX"
}
]
},
{
"stockStatus": "XXXXX",
"quantity": [
{
"uom": "XXXXX",
"isoUom": "XXXXX",
"amount": "XXXXX"
}
]
},
{
"stockStatus": "XXXXX",
"quantity": [
{
"uom": "XXXXX",
"isoUom": "XXXXX",
"amount": "XXXXX"
}
]
}
],
"dateModified": "XXXXX"
},
{
"id": "XXXXX",
"stocks": [
{
"stockStatus": "XXXXX",
"quantity": [
{
"uom": "XXXXX",
"isoUom": "XXXXX",
"amount": "XXXXX"
}
]
},
{
"stockStatus": "XXXXX",
"quantity": [
{
"uom": "XXXXX",
"isoUom": "XXXXX",
"amount": "XXXXX"
}
]
},
{
"stockStatus": "XXXXX",
"quantity": [
{
"uom": "XXXXX",
"isoUom": "XXXXX",
"amount": "XXXXX"
}
]
}
],
"dateModified": "XXXXX"
},
{
"id": "XXXXX",
"stocks": [
{
"stockStatus": "XXXXX",
"quantity": [
{
"uom": "XXXXX",
"isoUom": "XXXXX",
"amount": "XXXXX"
}
]
},
{
"stockStatus": "XXXXX",
"quantity": [
{
"uom": "XXXXX",
"isoUom": "XXXXX",
"amount": "XXXXX"
}
]
},
{
"stockStatus": "XXXXX",
"quantity": [
{
"uom": "XXXXX",
"isoUom": "XXXXX",
"amount": "XXXXX"
}
]
}
],
"dateModified": "XXXXX"
}
],
"dateModified": "XXXXX",
"temporaryNegativeStock": "XXXXX"
}
}
the tried Jolt Spec is :
[
{
"operation": "shift",
"spec": {
"data": {
"storageLocations": {
"*": {
"@(3,metadata.timestamp)": "[&1].LastUpdated",
"@(2,product.id)": "[&1].MaterialCode",
"@(2,product.baseUoM)": "[&1].BaseUoM",
"@(2,product.isoBaseUom)": "[&1].ISOBaseUoM",
"@(2,location.id)": "[&1].LocationId",
"@(id)": "[&1].StorageLocationId",
"@(dateModified)": "[&1].StorageLocationLastUpdated",
"stocks": {
"*": {
"quantity": {
"*": {
"@(amount)": "[&5].StockAmount",
"@(isoUom)": "[&5].StockISOUoM",
"@(uom)": "[&5].StockUoM",
"@(2,stockStatus)": "[&5].StockStatus"
}
}
}
}
}
}
}
}
}
]
Ouput we are getting
[
{
"LastUpdated": "XXXXX",
"MaterialCode": "na-XXXXX",
"StorageLocationId": "XXXXX",
"StorageLocationLastUpdated": "XXXXX",
"StockAmount": [
"0.000",
"0.000",
"0.000"
],
"StockISOUoM": [
"XXXXX",
"XXXXX",
"XXXXX"
],
"StockUoM": [
"XXXXX",
"XXXXX",
"XXXXX"
],
"StockStatus": [
"XXXXX",
"XXXXX",
"XXXXX"
]
},
{
"LastUpdated": "XXXXX",
"MaterialCode": "na-XXXXX",
"StorageLocationId": "XXXXX",
"StorageLocationLastUpdated": "XXXXX",
"StockAmount": [
"0.000",
"0.000",
"0.000"
],
"StockISOUoM": [
"XXXXX",
"XXXXX",
"XXXXX"
],
"StockUoM": [
"XXXXX",
"XXXXX",
"XXXXX"
],
"StockStatus": [
"XXXXX",
"XXXXX",
"XXXXX"
]
},
{
"LastUpdated": "XXXXX",
"MaterialCode": "na-XXXXX",
"StorageLocationId": "XXXXX",
"StorageLocationLastUpdated": "XXXXX",
"StockAmount": [
"0.000",
"0.000",
"0.000"
],
"StockISOUoM": [
"XXXXX",
"XXXXX",
"XXXXX"
],
"StockUoM": [
"XXXXX",
"XXXXX",
"XXXXX"
],
"StockStatus": [
"XXXXX",
"XXXXX",
"XXXXX"
]
}
]
Need help in writing a jolt spec so that we get a flattened Array