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"
}