C# – Deserialize JSON to anonymous object

asp.netcjson

In C#, I am have successfully serialized an anonymous object into JSON by use of code like this…

var obj = new { Amount = 108, Message = "Hello" };
JavaScriptSerializer serializer = new JavaScriptSerializer();
String output = serializer.Serialize(obj);

However, what I would like to be able to do later is to deserialize the JSON string back into an anonymous object. Something like this…

var obj2 = serializer.Deserialize(output, object);

But the serializer.Deserialize() method requires a second parameter that is the type of object it will deserialize to.

I tried this…

var obj2 = serializer.Deserialize(output, obj.GetType());

But this produces an error:

No parameterless constructor defined for type of '<>f__AnonymousType0`2[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]'.

I'm not sure what this error means.

Best Answer

how about dynamics, the fastest way I see is this:

dynamic myObject = JsonConvert.DeserializeObject<dynamic>(output);

decimal Amount = Convert.ToDecimal(myObject.Amount);
string Message = myObject.Message;

Note: You will need Newtonsoft.json.dll reference