Forum Discussion

hpv's avatar
hpv
Former Employee
9 years ago

Change OBJECT to ARRAY using Mapper

Using Mapper, we can change the Object in to array.

In the below pipeline , data is generated using csv generator in plain text.
Pipeline

CSV generator configurations

Changing the name from object to list.

$Name instanceof Array?$Name :[$Name]

Here name is the attribute which is reffered from csv generator and is converted to list from object.

Output of Mapper
[ { "Name": [ "Harish" ], "age": "26" } ]

Here added an JSON splitter to read the list from the output of mapper.

Below is the output of JSON splitter.
[ { "splitValue": "Harish" } ]

Attaching the sample pipeline.Array to Object_2017_03_06.slp (4.0 KB)

1 Reply

  • sdeng's avatar
    sdeng
    New Contributor II

    Yes, here’s the code generated:
    <SOAP-ENV:Envelope
    xmlns:SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope/
    xmlns:ns0=“urn:com.workday/bsvc”>
    SOAP-ENV:Header
    ns0:Workday_Common_Header
    ns0:Include_Reference_Descriptors_In_Response$Include_Reference_Descriptors_In_Response</ns0:Include_Reference_Descriptors_In_Response>
    </ns0:Workday_Common_Header>
    </SOAP-ENV:Header>
    SOAP-ENV:Body
    <ns0:Put_Provisioning_Group_Assignment_Request ns0:version=“$version”>
    <ns0:Provisioning_Group_Assignment_Reference ns0:Descriptor=“$Provisioning_Group_Assignment_Reference.Descriptor”>#foreach($ID in $Provisioning_Group_Assignment_Reference.ID)
    <ns0:ID ns0:type=“$ID.type”>$ID.value</ns0:ID>#end
    </ns0:Provisioning_Group_Assignment_Reference>
    ns0:Provisioning_Group_Assignment_Data
    <ns0:Person_Reference ns0:Descriptor=“$Provisioning_Group_Assignment_Data.Person_Reference.Descriptor”>#foreach($ID in $Provisioning_Group_Assignment_Data.Person_Reference.ID)
    <ns0:ID ns0:type=“$ID.type”>$ID.value</ns0:ID>#end
    </ns0:Person_Reference>
    <ns0:Worker_Reference ns0:Descriptor=“$Provisioning_Group_Assignment_Data.Worker_Reference.Descriptor”>#foreach($ID in $Provisioning_Group_Assignment_Data.Worker_Reference.ID)
    <ns0:ID ns0:type=“$ID.type”>$ID.value</ns0:ID>#end
    </ns0:Worker_Reference>
    ns0:Provisioning_Group$Provisioning_Group_Assignment_Data.Provisioning_Group</ns0:Provisioning_Group>
    ns0:Status$Provisioning_Group_Assignment_Data.Status</ns0:Status>
    ns0:Last_Changed$Provisioning_Group_Assignment_Data.Last_Changed</ns0:Last_Changed>
    </ns0:Provisioning_Group_Assignment_Data>
    </ns0:Put_Provisioning_Group_Assignment_Request>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>

    Updated to below:
    <SOAP-ENV:Envelope
    xmlns:SOAP-ENV=“http://schemas.xmlsoap.org/soap/envelope/
    xmlns:ns0=“urn:com.workday/bsvc”>
    SOAP-ENV:Header
    ns0:Workday_Common_Header
    ns0:Include_Reference_Descriptors_In_Response$Include_Reference_Descriptors_In_Response</ns0:Include_Reference_Descriptors_In_Response>
    </ns0:Workday_Common_Header>
    </SOAP-ENV:Header>
    SOAP-ENV:Body
    <ns0:Put_Provisioning_Group_Assignment_Request ns0:version=“$version”>
    <ns0:Provisioning_Group_Assignment_Reference ns0:Descriptor=“$Provisioning_Group_Assignment_Reference.Descriptor”>#foreach($ID in $Provisioning_Group_Assignment_Reference.ID)
    <ns0:ID ns0:type=“$ID.type”>$ID.value</ns0:ID>#end
    </ns0:Provisioning_Group_Assignment_Reference>
    ns0:Provisioning_Group_Assignment_Data
    <ns0:Person_Reference ns0:Descriptor=“$Provisioning_Group_Assignment_Data.Person_Reference.Descriptor”>#foreach($ID in $Provisioning_Group_Assignment_Data.Person_Reference.ID)
    <ns0:ID ns0:type=“$ID.type”>$ID.value</ns0:ID>#end
    </ns0:Person_Reference>
    <ns0:Worker_Reference ns0:Descriptor=“$Provisioning_Group_Assignment_Data.Worker_Reference.Descriptor”>foreach($ID in $Provisioning_Group_Assignment_Data.Worker_Reference.ID)
    <ns0:ID ns0:type=“$ID.type”>$ID.value</ns0:ID>end
    </ns0:Worker_Reference>
    ns0:Provisioning_Group$Provisioning_Group_Assignment_Data.Provisioning_Group</ns0:Provisioning_Group>
    ns0:Status$Provisioning_Group_Assignment_Data.Status</ns0:Status>
    ns0:Last_Changed$Provisioning_Group_Assignment_Data.Last_Changed</ns0:Last_Changed>
    </ns0:Provisioning_Group_Assignment_Data>
    </ns0:Put_Provisioning_Group_Assignment_Request>
    </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>

    In the mapper before, I map it like below:

    got below error:
    Failure: Unable to write key: $.ID.type, Reason: Expecting object for JSON-Path field reference ‘type’, found: String, Resolution: Please file a defect against the snap

    • acesario's avatar
      acesario
      Contributor II

      @sdeng Did you ever get this working successfully via soap execute? I have this working for a get request, but not for a submit. curious about the soap template, and how that factors into the solution. Any advice?