dymaic方式的Json序列化

dymaic方式的Json序列化

from:http://*.com/questions/3142495/deserialize-json-into-c-sharp-dynamic-object

If you are happy to have a dependency upon the System.Web.Helpers assembly, then you can use the Json class:

dynamic data = Json.Decode(json);

It is included with the MVC framework as an additional download to the .NET 4 framework. Be sure to give Vlad an upvote if that's helpful! However if you cannot assume the client environment includes this DLL, then read on.


An alternative deserialisation approach is suggested here. I modified the code slightly to fix a bug and suit my coding style. All you need is this code and a reference to System.Web.Extensions from your project:

 View Code

You can use it like this:

string json = ...;  
var serializer = new JavaScriptSerializer(); 
serializer.RegisterConverters(new[] { new DynamicJsonConverter() });  
dynamic obj = serializer.Deserialize(json, typeof(object));

So, given a JSON string:

{ "Items":[ 
{ "Name":"Apple", "Price":12.3 }, 
{ "Name":"Grape", "Price":3.21 } ],
 "Date":"21/11/2010" }

The following code will work at runtime:

dynamic data = serializer.Deserialize(json, typeof(object));  
data.Date; // "21/11/2010" 
data.Items.Count; // 2 
data.Items[0].Name; // "Apple" 
data.Items[0].Price; // 12.3 (as a decimal) 
data.Items[1].Name; // "Grape" 
data.Items[1].Price; // 3.21 (as a decimal)