JDynamic :支持Json反序列化为Dynamic对象

 

2010年 .NET 4.0 发布前后,从3.5向4.0迁移,那时也有一些异构系统的需求,主要是和PHP打交道,通信使用的HTTP 格式为JSON。

不过因为接口比较多,也没有统一规范,PHP端相对是制定接口的一方,所以.NET中反序列化时就显得被动了一些。

当时看中了Dynamic方便使用的优势,并以ASP.NET MVC中 ViewBag->ViewData的转换为参考,制定了一些简单的测试用例,后期就是完善了这些测试用例,使之可以成为一个简单易用的工具类。

最近整理了一下,把这个工具类放到了Codeplex上 http://jdynamic.codeplex.com/

以下是一些测试用例:

一、直接获取值

dynamic json = new JDynamic("1");
json.Value //这样就可以读到1

二、JSON对象

dynamic json = new JDynamic("{a:'abc'}");
json.a 可以得到字符串 "abc"

dynamic json = new JDynamic("{a:3.1416}");
json.a 的值是 3.1416m

dynamic json = new JDynamic("{a:1}");
json.a 的值是 1

三、集合

dynamic json = new JDynamic("[1,2,3]");
json.Length/json.Count 这两个属性是 3
也可以使用下标来读取: json[0]/ json[2]

dynamic json = new JDynamic("{a:[1,2,3]}");
可以这样来读取 json.a[0]/ json.a[2]

dynamic json = new JDynamic("[{b:1},{c:1}]");
可以这样来读取int的值  json[0].b/json[1].c

四、嵌套JSON对象

dynamic json = new JDynamic("{a:{a:1} }");
json.a.a 可以读出值1.

JDynamic :支持Json反序列化为Dynamic对象的更多相关文章

  1. 使用 dynamic 标记解析JSON字符串 JDynamic :支持Json反序列化为Dynamic对象

    使用 dynamic 标记解析JSON字符串  http://www.cnblogs.com/taotaodetuer/p/4171327.html 1 string jsonStr = " ...

  2. C# Newtonsoft.Json反序列化为dynamic对象之后的使用

    通过Newtonsoft.Json将一个json类型的字符串反序列化为dynamic后直接使用报错 源代码: namespace ConsoleApplication1 { class Program ...

  3. 复杂JSON反序列化为类对象

    有3种常用的反序列化库,gson和fastjson都很棒,json-lib有很大的局限性不推荐使用! 1. net.sf.json(json-lib) 只能用于解析简单的JSON,稍微复杂点的例如,类 ...

  4. JavaScriptSerializer类 对象序列化为JSON,JSON反序列化为对象

    JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.说白了就是能够直接将一个C#对象传送到前台页面成为javascript对 ...

  5. JavaScriptSerializer类 对象序列化为JSON,JSON反序列化为对象 。

    JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.说白了就是能够直接将一个C#对象传送到前台页面成为javascript对 ...

  6. 类对象序列化为json串,json串反序列化为类对象

    1.类对象序列化为json串: 方法一: class P(object): def __init__(self,name,age,sex): self.name=name self.age=age s ...

  7. c# json转换成dynamic对象,然后在dynamic对象中动态获取指定字符串列表中的值

    using Newtonsoft.Json;using System;using System.Collections.Generic;using System.Linq;using System.T ...

  8. 使用DataContractJsonSerializer类将类型实例序列化为JSON字符串和反序列化为实例对象 分类: JSON 前端 2014-11-10 10:20 97人阅读 评论(1) 收藏

    一.JSON简介 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式. JSON是"名值对"的集合.结构由大 ...

  9. 将JSON反序列化为指定的.NET类型

    前言: 关于将JSON格式数据反序列化为指定的.NET类型数据常见的场景就是,关于网络请求获取请求成功的响应数据.本篇主要讲的的是如何通过使用Newtonsoft.Json中的JsonConvert. ...

随机推荐

  1. centos crontab 定时任务详解

    安装crontab: yum install crontabs 说明: /sbin/service crond start //启动服务 /sbin/service crond stop //关闭服务 ...

  2. SQL Server 2008安装和配置过程

    下面我将用图解的方式,来介绍SQL Server 2008安装和配置过程,希望对大家有所帮助. 闲言少叙,直奔主题!点击setup.exe安装文件后,如果系统没有以下组件,则会出现如下提示! 安装20 ...

  3. Export Farm Solution wsp Files SharePoint 2007 and 2010

    [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")$farm = [Microsof ...

  4. Bluetooth

    Android provides a default Bluetooth stack, BlueDroid, that is divided into two layers: The Bluetoot ...

  5. app进入后台申请10分钟活跃时间-b

    IOS允许长时间在后台运行的情况有7种: audio VoIP GPS 下载新闻 和其它附属硬件进行通讯时 使用蓝牙进行通讯时 使用蓝牙共享数据时 除以上情况,程序退出时可能设置短暂运行10分钟 让程 ...

  6. tomcat配置及使用 环境变量设置

    Tomcat的配置及测试: 第一步:下载tomcat,然后解压到任意盘符 第二步:配置系统环境变量 我这里是tomcat5.5,解压到的D盘 (路径为: D:\Program Files\tomcat ...

  7. 配置ASP.NET Nhibernate

    web.config:配置sql server数据库 <configuration> <configSections> <!--NHibernate Section--& ...

  8. Discuz!NT 后台任意文件上传的源代码修补方法

    相关的漏洞介绍: http://www.wooyun.org/bugs/wooyun-2013-035199 Discuz!NT 管理后台可以自定义文件类型,从而造成任意文件上传,测试过程中 aspx ...

  9. 网络编程之ping

    #include <sys/types.h>#include <netinet/ip.h>#include <netdb.h>#include<arpa/in ...

  10. Android工具包

    Eclipse + ADT +SDK,下载ADT Bundle全包含 adt-bundle-windows-x86_64-20140702 http://www.cnblogs.com/tc310/p ...