我有一些带有两个对象的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是最好的用途还是我应该使用别的东西?
提前致谢。
答案 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"}]
答案 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;