[英]How to handle json object in codebehind
我有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;
}
第一次城市会抛出错误,而下次是客户名。 因为item变量一次只能有一个变量。 由于我们没有属性,因此如何有效地读取所有10条以上的记录,但是只能通过索引器(details [“ customerName”])进行读取。
尝试这个:
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;
}
您可以枚举详细信息Dictionary。
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);
一件事,您可能会有一种类型,其中的字段映射到对象列表。 在进行ajax调用时,将json对象字符串化。 在您的Web方法中,将其作为字符串接收。 使用Json Deserializer并将其反序列化为您创建的类型。
有一个非常灵活的json框架( JSON.NET )可以帮助解决这个问题,definitley值得考虑,如果您使用JSON http://json.codeplex.com/做了大量工作
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.