JDynamic:支援Json反序列化為Dynamic物件

chsword發表於2012-10-09

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.

 


相關文章