09-28-2020 12:24 PM
So I have an input schema that has a structure similar to the one shown here:
{
"MatchUpdatePartyPayload:" {
"Address": [
{
"NonStandardUS": {
"Line1": <String>,
"Line2": <String>,
"Line3": <String>,
"City": <String>,
"State": <String>,
"Zip": <String>
},
"Foreign": {
"Line1": <String>,
"Line2": <String>,
"Line3": <String>,
"Line4": <String>,
}
}
]
}
}
I need to map these address fields to an output structure that is similar, but not quite the same. I have tried using the Mapper to do this and it is creating mapping table entries that look like this:
Expression => jsonPath($, "$MatchUpdatePartyPayload.Address[*].NonStandardUS.Line1")
Target Path => jsonPath($, "$MatchUpdateParty.Address[*].NonStandardUS.AddressLine1")
The input documents to the mapper all haver Line1 as a String. Unfortunately, the Mapper output all have AddressLine1 as an array of strings–which is not what I need. What do I need to do to fix the mapping to assign input String fields to output String fields for each element in the array?
Solved! Go to Solution.
09-30-2020 02:54 PM
Yeah, I finally realized that Join snap cannot handle joining fields into same top-level structure so I eliminated the top level structure for the join, and then used a mapper to add the top-level structure back. I had to write a custom snap (not included) to prune off all the null fields/elements created by the Null Safe Access mappers…
I must say that was a lot more painful than I think it should be. If I were to use this in an actual business process, the logic of the business process flow would get lost due to this complex mapping flow…
Here is the final working example (with all of the nulls still present).
Mapping Conundrum_2020_09_30 (3).slp (56.6 KB)
Thanks for the help,
Robert
09-28-2020 03:05 PM
You need to split the Array using the JSON Splitter and work on the Transformations and Group them back.
Attached is a sample pipelinesample_2020_09_28.slp (6.2 KB)
09-28-2020 05:15 PM
Thanks for the reply. This is going to be painful since some of our payloads have a dozen or more optional fields that are arrays…
09-28-2020 07:19 PM
@skatpally I am not sure how this sample would work. In my case, most arrays have 1 to unbounded elements. The Group By N is asking for the number of elements to put back into the array that was split. Since each document will have different numbers of array elements, I don’t see how your approach can work. What am I missing?
Here is the start of a sample pipeline just to handle a single mapping. Mapping Conundrum_2020_09_28.slp (29.7 KB)
09-29-2020 10:32 AM
A value of 0 instructs the Snap to group all input documents into a single document.