[MAPSERVER-USERS] mapObject serialization in C# (variant)
BrainDrain
paulborodaev at gmail.com
Mon Jun 9 12:26:52 PDT 2008
Is there any 'standart' fast(!) way/method to serialize (xml/json/other
markup) mapObj in C#? I need it for using server mapObj as JSON on rich
client app running on browser. Look at my method (using reflection):
public static ListDictionary PartialSerialize(object instance, Stack
callerTypes, Type[] excludeTypes)
{
ListDictionary result = new ListDictionary();
object val;
callerTypes.Push(instance.GetType());
PropertyInfo[] pis = instance.GetType().GetProperties();
foreach (PropertyInfo pi in pis)
{
if (pi.PropertyType.IsSerializable &&
!pi.PropertyType.IsArray)
result[pi.Name] = pi.GetValue(instance, new object[0]);
else
{
//preventing useless nesting
if (!callerTypes.Contains(pi.PropertyType) &&
!((IList)excludeTypes).Contains(pi.PropertyType))
{
val = pi.GetValue(instance, new object[0]);
if (val != null)
result[pi.Name] = PartialSerialize(val,
callerTypes, excludeTypes);
}
}
}
callerTypes.Pop();
return result;
}
...
So I can convert mapObj on serever to hashtable automatically an then
populate JSON object
(still need to call explicitly getLayer, getClass etc., but this is not a
problem):
...
layers[i].Properties = Tools.PartialSerialize(layer, new Stack(), new
Type[3] { typeof(mapObj), typeof(hashTableObj), typeof(colorObj)});
...
classes[j].Properties = Tools.PartialSerialize(layerClass, new Stack(), new
Type[4] { typeof(layerObj), typeof(labelObj), typeof(hashTableObj),
typeof(colorObj)});
...
styles[k].Properties = Tools.PartialSerialize(classStyle, new Stack(), new
Type[2]{typeof(hashTableObj), typeof(colorObj)});
...
mapStub.Properties = Tools.PartialSerialize(map, new Stack(), new Type[11] {
typeof(labelObj), typeof(hashTableObj), typeof(fontSetObj),
typeof(labelCacheObj), typeof(outputFormatObj[]), typeof(queryMapObj),
typeof(referenceMapObj), typeof(scalebarObj), typeof(symbolSetObj),
typeof(colorObj), typeof(legendObj)});
...
JavaScriptSerializer class object allows to perform convertion to client
More often I use script method in my web service that can do it behind the
scenes.
How do you do such kind of operation?
--
View this message in context: http://www.nabble.com/mapObject-serialization-in-C--%28variant%29-tp17739919p17739919.html
Sent from the Mapserver - User mailing list archive at Nabble.com.
More information about the MapServer-users
mailing list