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. Eclipse 下 opennms 开发环境搭建

    1.eclipse3.5或更高版本,并且使用纯净的java版.下载地址:Eclipse for Java Developers. 2.安装需要的插件.通过Help/Install New Softwa ...

  2. c 指针兼容性问题

    指针兼容性问题: const指针不能赋值给非const指针. 非const指针可以赋值给const 指针,但前提是只是一层间接运算 Example: int *pt1; const *pt2; con ...

  3. Oracle物理的体系结构

    体系结构图的学习: 老余服装店的故事 结构图: SQL查询语句 SGA 共享池shared pool 数据缓存区Buffer cache PGA 进程 SQL更新语句 SGA: 日志缓存区 日志文件 ...

  4. JqueryMoblie 之 loading

    显示“正在加载........”等字样,并且带有加载图片的显示. //显示加载器function showLoader() { $.mobile.loading('show', { text: '正在 ...

  5. [转载]C# FTP操作工具类

    本文转载自<C# Ftp操作工具类>,仅对原文格式进行了整理. 介绍了几种FTP操作的函数,供后期编程时查阅. 参考一: using System; using System.Collec ...

  6. 编译dubbo2.5.4时遇到的问题及解决

    dubbo的官方git地址为:https://github.com/alibaba/dubbo 按照其流程进行下载及编译,遇到的问题为: 1. 执行 mvn clean install -Dmaven ...

  7. 2109&2535: [Noi2010]Plane 航空管制 - BZOJ

    Description世博期间,上海的航空客运量大大超过了平时,随之而来的航空管制也频频发生.最近,小X就因为航空管制,连续两次在机场被延误超过了两小时.对此,小X表示很不满意. 在这次来烟台的路上, ...

  8. VMware Workstation 10安装Centos6.4操作步骤说明

    1.在网上下载VMware Workstation 10, 百度软件中心助手安装程序高速下载,下载完成后默认是自动启动安装的,而原来的安装程序文件保存在:  C:\Users\用户名\Document ...

  9. 【设计模式六大原则3】依赖倒置原则(Dependence Inversion Principle)

      定义:高层模块不应该依赖低层模块,二者都应该依赖其抽象:抽象不应该依赖细节:细节应该依赖抽象. 问题由来:类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成.这种场景下,类 ...

  10. UVA 291 The House Of Santa Claus (DFS求一笔画)

    题意:从左下方1开始,一笔画出圣诞老人的屋子(不过话说,圣诞老人的屋子是这样的吗?这算是个屋子么),输出所有可以的路径. 思路:贴代码. #include <iostream> #incl ...