I have written a nifty function that will accept a system.object
, reflect on its properties and serialize the object into a JSON string. It looks like this:
public class JSONSerializer
{
public string Serialize(object obj)
Now, I want to be able to do this to serialize a dynamic/ExpandoObject, but because my serializer uses reflection, it isn't able to do it. What's the workaround?
public class Test
{
public dynamic MakeDynamicCat()
{
dynamic newCat = new ExpandoObject();
newCat.Name = "Polly";
newCat.Pedigree = new ExpandoObject();
newCat.Pedigree.Breed = "Whatever";
return newCat;
}
public void SerializeCat()
{
new JSONSerializer().Serialize(MakeDynamicCat());
}
}
I think, this question is very similar: How do I reflect over the members of dynamic object?
At least the answers should help you too.
I would suggest to use JSON.NET to serialize. The version 3.5 supports serializing dynamic objects (like expando). Deserialization from JSON to dynamic object involves a little efforts but that too isn't too cumbersome. The below post lists that out:
来源:https://stackoverflow.com/questions/3004965/reflect-on-an-expandoobject