I used OSDParser.SerializeJsonString() to seralize an OSDArray on the sender side. On the receiver side, the array was derialized and casted back to OSDArray, but was found to be an empty array. It happens even no matter is the serialized data is sent through wire or not. A simple program that can reproduce the problem is attached.
The following program could be used to reproduce the problem. After the line of "OSD buffer = OSDParser.DeserializeJson(respString);" and casting it into an OSDArray, the array is empty. This piece of code used to work well (with older openmetaverse dlls).
public class OSDTest
public static void Main(string args)
OSDArray simProfileArray = new OSDArray();
//first, we add the load status and CPU information
OSD loadStatus = OSD.FromUInteger(1);
OSD cpu = OSD.FromReal(10.0);
OSDMap statsMap = new OSDMap();
string key = "PrimCount";
float avg = Convert.ToSingle(1.2);
statsMap[key] = OSD.FromReal(avg);
string respString = OSDParser.SerializeJsonString(simProfileArray);
OSD buffer = OSDParser.DeserializeJson(respString);
if (buffer.Type == OSDType.Array)
array = (OSDArray)buffer;