在C#中使用JSON获取嵌套数据

时间:2010-07-20 11:33:34

标签: c# asp.net-mvc json asp.net-mvc-2

我有一些带有两个对象的JSON,每个对象都嵌套了3个对象。

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

在c#asp.net mvc2中,我已经能够使用Hashtable到达“FirstPerson”或“SecondPerson”但是当我知道“FirstPerson”时,如何获得“数字”或“a10”?

e.g。对象内的对象。

Hashtable是最好的用途还是我应该使用别的东西?

提前致谢。

3 个答案:

答案 0 :(得分:3)

我发现你的问题的解决方案可能会提供解决问题的线索

想要将C#对象转换为它的JSON等价物吗?以下是System.Web.Script命名空间中的一个简单对象,它完全执行以下操作:

System.Web.Script.Serialization.JavaScriptSerializer。它存储在System.Web.Extentions DLL(仅限.Net Framework 3.5)

使用此对象,我们在C#中序列化和反序列化对象。这是一个快速示例:

一个简单的Employee对象:

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

将一些实例添加到List:

员工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 = new List()

{ 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

答案 1 :(得分:2)

我使用JsonConvert取得了不错的成绩。它似乎很好地知道如何处理集合。只需定义要反序列化并具有的类即可。

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

示例:

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

MyCollection是一个类,其中包含一些人的集合。

答案 2 :(得分:1)

您可以将JSON对象分配给动态变量并以这种方式访问​​属性(仅在C#4.0中)

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