dymaic方式的Json序列化

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:

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)
时间: 2024-11-03 01:38:28

dymaic方式的Json序列化的相关文章

Json序列化之.NET开源类库Newtonsoft.Json的研究

一.Json简介                                                                                                                    JSON(全称为JavaScript Object Notation) 是一种轻量级的数据交换格式.它是基于JavaScript语法标准的一个子集. JSON采用完全独立于语言的文本格式,可以很容易在各种网络.平台和程序之间传输.JSON的语法很简单,

扩展方法对json序列化及反序列化

this+类型名+变量名,.NET 3.0 之后新增的一种特性,叫"扩展方法". int类型变量都能调用toString()方法,将int类型变量转换成string型变量:如果需要更改转换的形式,比如将int类型变量转换成指定格式的字符串,并且这种方法调用非常频繁,可以编写扩展方法.扩展方法能够向现有类型"添加"方法,而无需创建新的派生类型.重新编译或以其他方式修改原始类型.扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用. 例如下列代码: n

JSON序列化那点事儿

JSON序列化那点事儿 序 当前主流的序列化JSON字符串主要有两种方式:JavaScriptSerializer及Json.net(Nuget标识:Newtonsoft.Json).JavaScriptSerializer是微软官方提供的一种方法,所以如果你用的是asp.net mvc,在Action中如果你返回的语句写的是”return Json(xxx);“,其实你用的就是JavaScriptSerializer方式.现在更多的人选择的是Json.net,因为它为用户提供了更加清晰地使用体

基于Json序列化和反序列化通用的封装

1. 最近项目已经上线了 ,闲暇了几天 想将JSON的序列化以及反序列化进行重新的封装一下本人定义为JSONHelp,虽然Microsoft 已经做的很好了.但是我想封装一套为自己开发的项目使用.方便后期的扩展以及开发使用. 2. 什么是 JSON ? JSON:JavaScript 对象表示法(JavaScript Object Notation).JSON 是存储和交换文本信息的语法.类似 XML.JSON 比 XML 更小.更快,更易解析.  现在开发Web应用程序 JSON 是 必不可少

WCF传输1-你是否使用过压缩或Json序列化?

1.当遇到需要传输大量数据时,怎么样传输数据? 2.压缩数据有哪几种常见的方式? 问题1解答:通过压缩来传输数据 问题2解答: (1)WCF自带的压缩方式 (2)自定义WCF binding进行压缩 (3)将对象序列化为JSON格式 今天来探讨一下WCF自带的压缩方式Gzip和Json序列化 我的其他WCF文章: WCF安全1-开篇 WCF安全2-非对称加密 WCF安全3-Transport与Message安全模式 WCF传输1-你是否使用过压缩或Json序列化? 先上图: 1.WCF自带的压缩

解决MVC Json序列化的循环引用问题/EF Json序列化循引用问题---Newtonsoft.Json

1..Net开源Json序列化工具Newtonsoft.Json中提供了解决序列化的循环引用问题: 方式1:指定Json序列化配置为 ReferenceLoopHandling.Ignore 方式2:指定 JsonIgnore忽略 引用对象 实例1,解决MVC的Json序列化引用方法: step1:在项目上添加引用 Newtonsoft.Json程序包,命令:Insert-Package Newtonsoft.Json step2:在项目中添加一个类,继承JsonResult,代码如下: ///

JSON 序列化和解析

JSON 即 (Javascript Object Notation,Javascript 对象表示法),是在Javascript中写结构化数据的方式.而JSON本身只是一种数据格式. 通常开发项目中通过JSON传输的数据并不能直接使用,比如: var book = { name:"json 序列化和解析", page:1, author:["michael.guo","michael.shuai"] }

C#中JSON序列化和反序列化

json序列化和反序列化帮助类: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.Serialization; using System.Runtime.Serialization.Json; using System.IO; using System.Text.RegularExpressions; using System.We

转载C# 对象转Json序列化

转载原地址:  http://www.cnblogs.com/plokmju/p/ObjectByJson.html JSON Json(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于JS的一个子集. Json采用完全独立于语言的文本格式.这使得Json成为理想的数据交换语言.易于人阅读和编写,同时也易于机器解析和生成. Json简单来说就是JS中的对象和数组,所以Json也存在两种结构:对象.数组. Json对象:Json对象定义在花括号“{}”内,