繁体   English   中英

如何在代码隐藏中处理json对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM