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.