我有 - var JsonObj = [];
我将一些数据推入其中并使用JQuery.ajax()
方法将其发送到代码隐藏。我能够在一个有这样参数的方法中接收
[WebMethod]
public static void SaveInfo(List<Object> userEnteredDetails)
{
}
我循环通过集合来获取类似这样的数据,
foreach (object item in userEnteredDetails)
{
Dictionary<string, object> details = item as Dictionary<string, object>;
string name = details["customerName"] as string;
}
这里的问题是,我在收藏中收到了10多件物品。所以我无法在上面的for循环中读取另一个属性。像这样的东西,
foreach (object item in userEnteredDetails)
{
Dictionary<string, object> details = item as Dictionary<string, object>;
string name = details["customerName"] as string;
string city= details["city"] as string;
}
Firsttime city会抛出一个错误,下次客户名称。因为item变量一次只有一个变量。如何有效地读取所有超过10条记录,因为我们没有属性,但只能通过索引器读取(详情[“customerName”])。
答案 0 :(得分:3)
试试这个:
string name = String.Empty;
string city = String.Empty;
foreach (object item in userEnteredDetails)
{
Dictionary<string, object> details = item as Dictionary<string, object>;
if (details.ContainsKey("customerName"))
name = details["customerName"] as string;
if (details.ContainsKey("city"))
city= details["city"] as string;
}
答案 1 :(得分:2)
您可以枚举详细信息词典。
foreach(var kvp in details)
{
// do something with kvp.Key and kvp.Value
}
编辑: 要首先获得一个合并的详细信息,您可以试试这个:
var details = list.Select(item => item as Dictionary<string, object>).SelectMany(d => d).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
答案 2 :(得分:1)
有一件事你可以有一个类型,其中的字段映射到对象列表。在进行ajax调用时会对json对象进行stringify。在您的Web方法中,将其作为字符串接收。使用Json反序列化器并将其反序列化为您创建的类型。
答案 3 :(得分:1)
Theres是一个非常灵活的json框架( JSON.NET )可以帮助解决这个问题,definitley值得考虑一下你是否在使用JSON进行大量工作http://json.codeplex.com/