Reputation: 420
In SnapLogic, I have an input JSON like the one below, it appears to be an array. I am trying to put it into a structure where it is an object called "remitLocations" composed of an array of addresses containing the following items. I have been trying to use mapper and structure snaps to do this. I also tried using JSON and XML generators to give it the structure I want, but so far nothing has worked.
[
{
"addressInternalid": 2631363,
"isDelete": false,
"internalSupplierid": 3423589,
"acctGrpid": "RT",
"address1": "5309 GREENWAY",
"address2": "5301 REDWAY",
"address3": "5504 BLUEWAY",
"poBox": "0912KHJWD",
"country": "USA",
"state": "US-TX",
"city": "FREE",
"zip": "78211",
"phone": "2229808888",
"phoneExtn": "091",
"fax": "747",
"faxExtn": "737",
"fullCompanyName": "SUPPLIER MARCH 3 dba TEXT",
"requestId": 5272423,
"id": "3423589",
"facilityCode": "0001",
"systemCode": "1",
"supplierType": "Operational",
"status": "ACTIVE"
},
{
"addressInternalid": 2631367,
"isDelete": false,
"internalSupplierid": 3423589,
"acctGrpid": "RT",
"address1": "11305 4 PTS DR",
"address2": "BLDG 2,#100",
"country": "USA",
"state": "US-TX",
"city": "AUSTIN",
"zip": "78726",
"phone": "5126648805",
"phoneExtn": "123",
"fax": "123",
"faxExtn": "134",
"fullCompanyName": "SUPPLIER MARCH 3 dba TEXT",
"requestId": 5272423,
"id": "3423589",
"facilityCode": "0001",
"systemCode": "1",
"supplierType": "Operational",
"status": "ACTIVE"
},
{
"addressInternalid": 2631368,
"isDelete": false,
"internalSupplierid": 3423589,
"acctGrpid": "RT",
"address1": "REMIT 11305 4 PTS DR",
"address2": "BLDG 3",
"country": "USA",
"state": "US-TX",
"city": "AUSTIN",
"zip": "78725",
"phone": "5126600000",
"phoneExtn": "678",
"fax": "678",
"faxExtn": "678",
"fullCompanyName": "SUPPLIER MARCH 3 dba TEXT",
"requestId": 5272423,
"id": "3423589",
"facilityCode": "0001",
"systemCode": "1",
"supplierType": "Operational",
"status": "ACTIVE"
}
]
Upvotes: 2
Views: 2926
Reputation: 4131
Note: Answer contains two solutions. The bottom one seems to be a better solution because you use only one snap.
Solution #1
Use JSON Formatter to aggregate the incoming documents into a single JSON. Then use a Binary to Document Snap with encoding/decoding set to None. After that, you can just parse the content and put it under any field name in a mapper.
Sample Pipeline:
Binary to Document:
Final Mapper:
Output:
Notes
JSON.parse($content)
Solution #2
There is actually a better way to do it - Use the "Group By N Snap with Target Field as remitLocations
and Group Size as 0
.
A value of 0 instructs the Snap to group all input documents into a single document.
Sample Pipeline
Group By N
Output
Upvotes: 2