2010-07-20 49 views
1

我有一些JSON與兩個對象,並且這些各自具有嵌套3個對象。入門嵌套數據輸出JSON在C#

{ "FirstPerson": { "number": "101", "a10": "1001", "a20": "1002" }, "SecondPerson": { "number": "102", "a10": "2001", "a20": "2001" } }

在C#中asp.net MVC2我已經能夠得到「第一人稱」或者「SecondPerson」使用Hashtable的,但我怎麼得到「數字」或「A10」當我知道「第一個人」?

例如對象內的對象。

就是這個哈希表的最佳使用或我應該用別的東西嗎?

在此先感謝。

回答

1

您可以分配JSON對象動態變量和訪問性質的方式(只在C#4.0雖然)

dynamic jsonData = jsonObject; 
int workflowNum = jsonData.SecondPerson[0].workflow; 
+0

使用DeserializeObject獲取jsonObject? – Adrian 2010-07-20 14:13:03

+0

這或使用JSON.NET來獲取JSONObject並將其分配給一個動態變量。 JSON.NET用法:http://blog.petegoo.com/archive/0001/01/01/using-json.net-to-eval-json-into-a-dynamic-variable-in.aspx和JsonReader的用法: http://www.nikhilk.net/CSharp-Dynamic-Programming-JSON.aspx – amurra 2010-07-20 14:39:45

3

我發現你的問題的解決方案,可以提供線索,以解決

想要一個C#對象轉換成它的JSON等同?下面是從System.Web.Script命名空間正是這麼做的一個簡單的對象:

System.Web.Script.Serialization.JavaScriptSerializer。它存儲在System.Web.Extentions DLL(.NET Framework 3.5的只)

使用這個對象,我們序列化和反序列化在C#中的對象。下面是一個簡單示例:

簡單的員工對象:

public class Employee 
{ 
    public string Name { get; set; } 
    public string Age { get; set; } 
    public string ID { get; set; } 
} 

增加他們的一些實例列表:

員工oEmployee1 =

new Employee{Name="Pini",ID="111", Age="30"}; 

員工oEmployee2 =

new Employee { Name = "Yaniv", ID = "Cohen", Age = "31" }; 

僱員oEmployee3 =

new Employee { Name = "Yoni", ID = "Biton", Age = "20" }; 

列表oList =新列表()

{ oEmployee1, oEmployee2, oEmployee3 }; 

然後序列化:

System.Web.Script.Serialization.JavaScriptSerializer oSerializer = 新System.Web.Script .Serialization.JavaScriptSerializer(); string sJSON = oSerializer.Serialize(oList);

這裏是輸出:

[{"Name":"Pini","Age":"30","ID":"111"}, 

{"Name":"Yaniv","Age":"31","ID":"Cohen"}, 

{"Name":"Yoni","Age":"20","ID":"Biton"}] 

爲您考慮這裏是鏈接http://blogs.microsoft.co.il/blogs/pini_dayan/archive/2009/03/12/convert-objects-to-json-in-c-using-javascriptserializer.aspx

+0

這是非常接近,但我想反序列化。 – Adrian 2010-07-20 13:25:27

+0

而反序列化方法http://msdn.microsoft.com/en-us/library/bb355316.aspx不夠好...因爲? – 2010-07-20 13:33:56

+0

瞭解如何使用它的一些很好的例子? – Adrian 2010-07-20 13:43:20

2

我已經有了使用JsonConvert的好結果。它似乎很瞭解如何處理收藏。只要定義你想要反序列化的類就可以了。

http://james.newtonking.com/projects/json-net.aspx

例子:

MyCollection col = JsonConvert.DeserializeObject<MyCollection>(this.HttpContext.Request.Params[0]);

凡MyCollection的是一類,它包含的集合,在你的情況下,人。