Parse json to 'real' tabular format

Hi there

I’m using web requests to get tracking details on our shipments to customers, but find it difficult to parse to the correct format.
I get that I can use ‘Parse JSON’ or even ‘Import from Web API’, but the format I’m getting is a table with a sort of ‘waterfall’ look - How do I easily fill empty cells in a column within relevant group?

Do I need to use the ‘fill up/down’ action column by column?

Eg. in below table, I have multiple columns with only one field of data - all of these fields are related to the same path (or subsequent sub-paths) marked with {^} below (in reality it’s {*}/bracket-asterisk-bracket but due to formatting in post, it’s changed to show as below):

NewLabelLevel1
shipments{^}
shipments{^}.shipmentId
shipments{^}.uri
shipments{^}.assessedNumberOfItems
shipments{^}.deliveryDate
shipments{^}.status
shipments{^}.service.code
shipments{^}.service.name
shipments{^}.consignor.name
shipments{^}.consignee.address.city
shipments{^}.consignee.address.countryCode
shipments{^}.consignee.address.country
shipments{^}.consignee.address.postCode
shipments{^}.statusText.header
shipments{^}.statusText.body
shipments{^}.totalWeight.value
shipments{^}.totalWeight.unit
shipments{^}.assessedWeight.value
shipments{^}.assessedWeight.unit
shipments{^}.items{^}
shipments{^}.items{^}.itemId
shipments{^}.items{^}.dropOffDate
shipments{^}.items{^}.deliveryDate
shipments{^}.items{^}.status
shipments{^}.items{^}.statusText.header
shipments{^}.items{^}.statusText.body
shipments{^}.items{^}.acceptor.signatureReference
shipments{^}.items{^}.statedMeasurement.weight.value
shipments{^}.items{^}.statedMeasurement.weight.unit
shipments{^}.items{^}.statedMeasurement.length.value
shipments{^}.items{^}.statedMeasurement.length.unit
shipments{^}.items{^}.statedMeasurement.height.value
shipments{^}.items{^}.statedMeasurement.height.unit
shipments{^}.items{^}.statedMeasurement.width.value
shipments{^}.items{^}.statedMeasurement.width.unit
shipments{^}.items{^}.assessedMeasurement.weight.value
shipments{^}.items{^}.assessedMeasurement.weight.unit
shipments{^}.items{^}.assessedMeasurement.length.value
shipments{^}.items{^}.assessedMeasurement.length.unit
shipments{^}.items{^}.assessedMeasurement.height.value
shipments{^}.items{^}.assessedMeasurement.height.unit
shipments{^}.items{^}.assessedMeasurement.width.value
shipments{^}.items{^}.assessedMeasurement.width.unit
shipments{^}.items{^}.events{^}
shipments{^}.items{^}.events{^}.eventTime
shipments{^}.items{^}.events{^}.eventCode
shipments{^}.items{^}.events{^}.status
shipments{^}.items{^}.events{^}.eventDescription
shipments{^}.items{^}.events{^}.location.displayName
shipments{^}.items{^}.events{^}.location.name
shipments{^}.items{^}.events{^}.location.locationId
shipments{^}.items{^}.events{^}.location.countryCode
shipments{^}.items{^}.events{^}.location.country
shipments{^}.items{^}.events{^}.location.postcode
shipments{^}.items{^}.events{^}.location.city
shipments{^}.items{^}.events{^}.location.locationType
shipments{^}.items{^}.references{^}
shipments{^}.items{^}.references{^}.value
shipments{^}.items{^}.references{^}.type
shipments{^}.items{^}.references{^}.name
shipments{^}.items{^}.itemRefIds{^}
shipments{^}.items{^}.freeTexts{^}
shipments{^}.additionalServices{^}
shipments{^}.splitStatuses{^}
shipments{^}.shipmentReferences{^}
shipments{^}.shipmentReferences{^}.value
shipments{^}.shipmentReferences{^}.type
shipments{^}.shipmentReferences{^}.name

Hi Christoffer,

It seems that you’ll have to add several “Fill down” and each action should utilize “Group by selected columns” options and only fill columns at a certain level.

For example:

First action: group by shipments{^}.shipmentId, fill down:

shipments{^}.service.code
shipments{^}.service.name
shipments{^}.consignor.name
shipments{^}.consignee.address.city
shipments{^}.consignee.address.countryCode
shipments{^}.consignee.address.country
shipments{^}.consignee.address.postCode
shipments{^}.statusText.header
shipments{^}.statusText.body
shipments{^}.totalWeight.value
shipments{^}.totalWeight.unit
shipments{^}.assessedWeight.value
shipments{^}.assessedWeight.unit

Second action: group by shipments{^}.items{^}.itemId, fill down:

shipments{^}.items{^}.statusText.header
shipments{^}.items{^}.statusText.body
shipments{^}.items{^}.acceptor.signatureReference
shipments{^}.items{^}.statedMeasurement.weight.value
shipments{^}.items{^}.statedMeasurement.weight.unit
shipments{^}.items{^}.statedMeasurement.length.value
shipments{^}.items{^}.statedMeasurement.length.unit
shipments{^}.items{^}.statedMeasurement.height.value
shipments{^}.items{^}.statedMeasurement.height.unit
shipments{^}.items{^}.statedMeasurement.width.value
shipments{^}.items{^}.statedMeasurement.width.unit
shipments{^}.items{^}.assessedMeasurement.weight.value
shipments{^}.items{^}.assessedMeasurement.weight.unit
shipments{^}.items{^}.assessedMeasurement.length.value
shipments{^}.items{^}.assessedMeasurement.length.unit
shipments{^}.items{^}.assessedMeasurement.height.value
shipments{^}.items{^}.assessedMeasurement.height.unit
shipments{^}.items{^}.assessedMeasurement.width.value
shipments{^}.items{^}.assessedMeasurement.width.unit

etc.

Thank you very much - That seems to work :slight_smile: