2

私は持っています-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 変数は一度に 1 つの変数を持つためです。プロパティがないため、10 を超えるすべてのレコードを効率的に読み取る方法を教えてください。

4

4 に答える 4

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;
}
于 2012-07-12T10:59:55.450 に答える
2

詳細ディクショナリを列挙できます。

foreach(var kvp in details)
  {
// do something with kvp.Key and kvp.Value
  }

編集:最初に1つのマージされた詳細辞書を取得するには、これを試すことができます:

var details = list.Select(item => item as Dictionary<string, object>).SelectMany(d => d).ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
于 2012-07-12T11:00:14.010 に答える
1

これに役立つ非常に柔軟なjsonフレームワーク(JSON.NET )があります.JSON http://json.codeplex.com/で多くの作業を行う場合は、検討する価値があります。

于 2012-07-12T11:11:53.690 に答える
1

オブジェクトのリストにマッピングするフィールドを持つ型を持つことができることの 1 つです。ajax 呼び出しを行いながら、json オブジェクトを文字列化します。Web メソッドで文字列として受け取ります。Json Deserializer を使用して、作成した型に逆シリアル化します。

于 2012-07-12T10:59:38.900 に答える