cancel
Showing results forย 
Search instead forย 
Did you mean:ย 

JSON Root value

walkermic
New Contributor III

I have an IDOC listener that will receive json files of different formats. The root of the json file will be different for the different types. I need to evaluate the root value(PEXR2002 in this example) and then route it based on the value to other child pipelines. I cannot figure out how to get the value out. Anyone know?
{
โ€œPEXR2002โ€: {
โ€œIDOCโ€: {
โ€œ@BEGINโ€: โ€œ1โ€,
โ€œEDI_DC40โ€: {
โ€œ@SEGMENTโ€: โ€œ1โ€,
โ€œTABNAMโ€: โ€œEDI_DC40โ€,
โ€œMANDTโ€: โ€œ100โ€,
โ€œDOCNUMโ€: โ€œ0000000002472008โ€,
โ€œDOCRELโ€: โ€œ731โ€,
โ€œSTATUSโ€: โ€œ30โ€,
โ€œDIRECTโ€: โ€œ1โ€,
โ€œOUTMODโ€: โ€œ2โ€,
โ€œIDOCTYPโ€: โ€œPEXR2002โ€,
โ€œMESTYPโ€: โ€œPAYEXTโ€,
โ€œSTDMESโ€: โ€œPAYEXTโ€,
โ€œSNDPORโ€: โ€œSAPS41โ€,
โ€œSNDPRTโ€: โ€œLSโ€,
โ€œSNDPRNโ€: โ€œS41CLNT100โ€,
โ€œRCVPORโ€: โ€œSNAPLOGICโ€,
โ€œRCVPRTโ€: โ€œLSโ€,
โ€œRCVPRNโ€: โ€œSNAPLOGICโ€,
โ€œCREDATโ€: โ€œ20181205โ€,
โ€œCRETIMโ€: โ€œ220141โ€,
โ€œSERIALโ€: โ€œ20180917101221โ€
},
โ€œE1IDKU1โ€: {
โ€œ@SEGMENTโ€: โ€œ1โ€,
โ€œBGMTYPโ€: โ€œPEXโ€,
โ€œBGMNAMEโ€: โ€œEXTENDED PAYMENT ORDERโ€,
โ€œBGMREFโ€: โ€œ2000000796โ€,
โ€œBGMLEVโ€: โ€œORGโ€,
โ€œBGMACCโ€: โ€œ001โ€
},
โ€œE1EDK03โ€: [
{
โ€œ@SEGMENTโ€: โ€œ1โ€,
โ€œIDDATโ€: โ€œ011โ€,
โ€œDATUMโ€: โ€œ20180917โ€,
โ€œUZEITโ€: โ€œ101221โ€
},
{
โ€œ@SEGMENTโ€: โ€œ1โ€,
โ€œIDDATโ€: โ€œ028โ€,
โ€œDATUMโ€: โ€œ20180917โ€
},
{
โ€œ@SEGMENTโ€: โ€œ1โ€,
โ€œIDDATโ€: โ€œ017โ€,
โ€œDATUMโ€: โ€œ20180918โ€
}
],
โ€œE1EDK02โ€: {
โ€œ@SEGMENTโ€: โ€œ1โ€,
โ€œQUALFโ€: โ€œ029โ€,
โ€œBELNRโ€: โ€œ2000000796โ€
},
โ€œE1IDKU2โ€: {
โ€œ@SEGMENTโ€: โ€œ1โ€,
โ€œBUSFUNโ€: โ€œ001โ€,
โ€œBUSGEOโ€: โ€œDOโ€,
โ€œBUSZFOโ€: โ€œ001โ€
},
โ€œE1IDKU3โ€: {
โ€œ@SEGMENTโ€: โ€œ1โ€,
โ€œPAIRZAWEโ€: โ€œTโ€,
โ€œPAYRUNCCโ€: โ€œ0001โ€,
โ€œPAYRUNIDโ€: โ€œCOMM3โ€,
โ€œPAYRUNDTโ€: โ€œ20180917โ€,
โ€œRELNUMโ€: โ€œ000000050005โ€
},
โ€œE1IDKU5โ€: {
โ€œ@SEGMENTโ€: โ€œ1โ€,
โ€œMOAQUALโ€: โ€œ002โ€,
โ€œMOABETRโ€: โ€œ9000.00โ€,
โ€œCUXWAERZโ€: โ€œUSDโ€
},
โ€œE1IDB02โ€: [
{
โ€œ@SEGMENTโ€: โ€œ1โ€,
โ€œFIIQUALIโ€: โ€œBAโ€,
โ€œFIIBKENNโ€: โ€œXXXXXXXXXXXXXXXโ€,
โ€œFIIBKCDEโ€: โ€œ002โ€,
โ€œFIIBKUKNโ€: โ€œ021000021โ€,
โ€œFIIBKUCDโ€: โ€œ003โ€,
โ€œFIIBKNAMโ€: โ€œXXXXXXXXXXXXXXXโ€,
โ€œFIIBKORTโ€: โ€œTAMPAโ€,
โ€œFIIBLANDโ€: โ€œUSโ€,
โ€œFIIKONTOโ€: โ€œXXXXXXXXXXXXXXXโ€,
โ€œFIIKWAERโ€: โ€œUSDโ€
},
{
โ€œ@SEGMENTโ€: โ€œ1โ€,
โ€œFIIQUALIโ€: โ€œBBโ€,
โ€œFIIBKENNโ€: โ€œXXXXXXXXXXXXXXXXXโ€,
โ€œFIIBKCDEโ€: โ€œ003โ€,
โ€œFIIBKNAMโ€: โ€œXXXXXXXXXXXXXXXXXXxโ€,
โ€œFIIBKORTโ€: โ€œCHICAGOโ€,
โ€œFIIBLANDโ€: โ€œUSโ€,
โ€œFIIKONTOโ€: โ€œXXXXXXXXXXXXXXโ€,
โ€œFIIKNAMEโ€: โ€œXXXXXXXXXXXXXXXXXXโ€,
โ€œFIIBKONTโ€: โ€œ01โ€
}
],
โ€œE1EDKA1โ€: [
{
โ€œ@SEGMENTโ€: โ€œ1โ€,
โ€œPARVWโ€: โ€œAGโ€,
โ€œNAME1โ€: โ€œXXXXXXXXXXXXXXโ€,
โ€œSTRASโ€: โ€œXXXXXXXXXXXXXXXXโ€,
โ€œPFACHโ€: โ€œ2020โ€,
โ€œORT01โ€: โ€œXXXXXXXXXXXXXโ€,
โ€œPSTLZโ€: โ€œ72762โ€,
โ€œPSTL2โ€: โ€œ72765โ€,
โ€œLAND1โ€: โ€œUSโ€,
โ€œTELF1โ€: โ€œ(479)290-4000โ€,
โ€œSPRASโ€: โ€œEโ€,
โ€œORT02โ€: โ€œWASHINGTONโ€,
โ€œREGIOโ€: โ€œARโ€,
โ€œISOALโ€: โ€œUSโ€
},
{
โ€œ@SEGMENTโ€: โ€œ1โ€,
โ€œPARVWโ€: โ€œBEโ€,
โ€œPARTNโ€: โ€œ0000001018โ€,
โ€œNAME1โ€: โ€œXXXXXXXXXXXXXXXxโ€,
โ€œNAME2โ€: โ€œTEST NAME UPDATEโ€,
โ€œNAME3โ€: โ€œTEST TEST TESTโ€,
โ€œNAME4โ€: โ€œTESTโ€,
โ€œSTRASโ€: โ€œONE APPLIED PLZโ€,
โ€œPFACHโ€: โ€œXXXXXXXXXXโ€,
โ€œORT01โ€: โ€œCLEVELANDโ€,
โ€œPSTLZโ€: โ€œXXXXXXXXXXXโ€,
โ€œPSTL2โ€: โ€œXXXXXXXXXโ€,
โ€œLAND1โ€: โ€œUSโ€,
โ€œTELF1โ€: โ€œXXXXXXXXXXโ€,
โ€œTELFXโ€: โ€œXXXXXXXXXXXโ€,
โ€œORT02โ€: โ€œCUYAHOGAโ€,
โ€œREGIOโ€: โ€œOHโ€,
โ€œISOALโ€: โ€œUSโ€,
โ€œPFORTโ€: โ€œPASADENAโ€,
โ€œSPRAS_ISOโ€: โ€œENโ€
}
],
โ€œE1IDPU1โ€: {
โ€œ@SEGMENTโ€: โ€œ1โ€,
โ€œDOCNAMEโ€: โ€œINVโ€,
โ€œDOCNUMMRโ€: โ€œ5000005346โ€,
โ€œDOCDATUMโ€: โ€œ20180917โ€,
โ€œE1IDPU5โ€: [
{
โ€œ@SEGMENTโ€: โ€œ1โ€,
โ€œMOAQUALโ€: โ€œ004โ€,
โ€œMOABETRโ€: โ€œ9000.00โ€,
โ€œCUXWAERZโ€: โ€œUSDโ€
},
{
โ€œ@SEGMENTโ€: โ€œ1โ€,
โ€œMOAQUALโ€: โ€œ003โ€,
โ€œMOABETRโ€: โ€œ0.00โ€,
โ€œCUXWAERZโ€: โ€œUSDโ€
},
{
โ€œ@SEGMENTโ€: โ€œ1โ€,
โ€œMOAQUALโ€: โ€œ005โ€,
โ€œMOABETRโ€: โ€œ0.00โ€,
โ€œCUXWAERZโ€: โ€œUSDโ€
},
{
โ€œ@SEGMENTโ€: โ€œ1โ€,
โ€œMOAQUALโ€: โ€œ006โ€,
โ€œMOABETRโ€: โ€œ9000.00โ€,
โ€œCUXWAERZโ€: โ€œUSDโ€
}
],
โ€œE1EDP03โ€: [
{
โ€œ@SEGMENTโ€: โ€œ1โ€,
โ€œIDDATโ€: โ€œ016โ€,
โ€œDATUMโ€: โ€œ20180917โ€
},
{
โ€œ@SEGMENTโ€: โ€œ1โ€,
โ€œIDDATโ€: โ€œ015โ€,
โ€œDATUMโ€: โ€œ20180917โ€
}
],
โ€œE1EDP02โ€: [
{
โ€œ@SEGMENTโ€: โ€œ1โ€,
โ€œQUALFโ€: โ€œ009โ€,
โ€œBELNRโ€: โ€œ5000005346โ€
},
{
โ€œ@SEGMENTโ€: โ€œ1โ€,
โ€œQUALFโ€: โ€œ010โ€,
โ€œBELNRโ€: โ€œ5200000898โ€
}
]
},
โ€œE1IDLU5โ€: [
{
โ€œ@SEGMENTโ€: โ€œ1โ€,
โ€œMOAQUALโ€: โ€œ002โ€,
โ€œMOABETRโ€: โ€œ9000.00โ€,
โ€œCUXWAERZโ€: โ€œUSDโ€
},
{
โ€œ@SEGMENTโ€: โ€œ1โ€,
โ€œMOAQUALโ€: โ€œ003โ€,
โ€œMOABETRโ€: โ€œ0.00โ€,
โ€œCUXWAERZโ€: โ€œUSDโ€
}
]
}
}
}

1 ACCEPTED SOLUTION

walkermic
New Contributor III

Close. I got it to work with $.entries()[0][0]

Thanks!

View solution in original post

5 REPLIES 5

tstack
Former Employee

Iโ€™m not quite clear on what youโ€™re asking, so Iโ€™ll take a guessโ€ฆ Do you have a Router snap after the listener with branches for each child pipeline? The condition for the branches would need to check for the given property. One way to do that is with the hasOwnProperty() method, like so:

$.hasOwnProperty('PEXR2002')

You can then get the value in a Mapper with $PEXR2002 and pass the doc into the child pipeline.

walkermic
New Contributor III

I want to parse the value into itโ€™s own field. At this point in the process I donโ€™t want to do the evaluation now. I want a downstream process to do that. When I test this at http://jsonpath.com/?
the command $.*~ gives be back what Iโ€™m asking for. However, it does not in any of the snaplogic snaps.

Iโ€™m sorry, Iโ€™m still not understanding what youโ€™re asking for. Can you attach an export of the pipeline youโ€™re working on or provide some screenshots of the pipeline and the snap configurations.

Schevus
New Contributor III

If Iโ€™m reading this right, it sounds like the name of your root element of your json document stream can change, but you always want to grab the root element to be able to process later? If so, I think something like this could work?

image