如何在代码后面处理json对象

时间:2012-07-12 10:49:20

标签: c# asp.net json jquery

我有 - 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”])。

4 个答案:

答案 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/