Sample Server Script

This example shows how to iterate through array elements by using indexes:

function Service_PreInvokeMethod (MethodName, Inputs, Outputs)
{
    var nReturn = CancelOperation; 
    var oBS;
    var ch1;
    var outPS;
    var conPS;
    var childPS;
    var childPS1;
    var outPS1;
    
   
    switch (MethodName) {
         case "ProcessEvent":
                ch1 = TheApplication().NewPropertySet();
                outPS = TheApplication().NewPropertySet();
                conPS = TheApplication().NewPropertySet();
                childPS = TheApplication().NewPropertySet();
                childPS1 = TheApplication().NewPropertySet();
                outPS1 = TheApplication().NewPropertySet();
        
                childPS.SetProperty("datatype","jsonprimarray");
                childPS.SetElement(99);
                childPS.SetElement("number");
    
                childPS1.SetProperty("datatype","jsonprimarray");
                childPS1.SetElement(32.54);
                childPS1.SetElement(398);
                childPS1.SetElement(false);
                
                conPS.SetType("MixedData");
            	conPS.SetProperty("datatype","jsonprimarray");
            	conPS.SetElement(childPS);
            	conPS.SetElement(123);
            	conPS.SetElement("orange");
            	conPS.SetElement("gray");
            	conPS.SetElement(childPS1);
				conPS.SetElement("violet");
                conPS.SetElement("green");
                conPS.ResetNextElementCount();
             
            	var count = conPS.GetNumberOfElements();
           	     var i;
                for (i = 0; i < count; i++)
                {
                  if (conPS.IsElementPropertySetAt(i))
                  {
                     outPS1 = conPS.GetElementAsPropertySetAt(i);
                
                  }
                  else
                  {
                     var val = conPS.GetElementAt(i);
                      if (i == count-1)
                      	outPS1.SetProperty("newVar",val);
                      if (i == count-2)
                          outPS1.SetProperty("oldVar",val);
                  }
                }

                outPS1.SetProperty("datatype","jsonprimarray");
                outPS1.SetType("Cut-color");
                outPS1.SetProperty("topic","customcontactevent");
                outPS1.SetProperty("Partitions","0,1");
            	
                oBS = TheApplication().GetService("Event Handler");
                oBS.InvokeMethod("SendEvent", outPS1, outPS);
            break;        
    }
    
    
   return nReturn;
}
Output:
{
  "Cut-color": [
    "32.54",
    "398",
    "false"
  ],
  "oldVar": "violet",
  "newVar": "green"
}