from:http://stackoverflow.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)

 

相关文章:

  • 2021-09-05
  • 2021-07-19
  • 2022-01-18
  • 2021-12-16
  • 2021-07-01
  • 2021-12-22
猜你喜欢
  • 2022-12-23
  • 2021-07-07
  • 2022-12-23
  • 2021-08-26
  • 2022-12-23
  • 2022-12-23
  • 2021-10-29
相关资源
相似解决方案