循环通过字符串对象字典

时间:2014-02-19 19:52:00

标签: c# dictionary

所以,我成功地循环遍历JSON数据字典,对于任何具有单一值的东西:

var jsonData = ((TextBox)e.Item.FindControl("txtMessage")).Text;

var js = new JavaScriptSerializer();
var obj = js.Deserialize<dynamic>(jsonData);

foreach (KeyValuePair<string,object> item in obj)
{
    var key = item.Key;
    var value = item.Value;
    if (key == "PercentageMatch")
    {
        ((Label) e.Item.FindControl("lblMatchedPercent")).Text =     
        value.ToString();
    }
}

我知道需要添加一些额外的代码来读取AKA的值,我知道这些值超过了值,有时甚至是10。

所以,我的代码看起来与此类似:

var jsonData = ((TextBox)e.Item.FindControl("txtMessage")).Text;

var js = new JavaScriptSerializer();
var obj = js.Deserialize<dynamic>(jsonData);

foreach (KeyValuePair<string,object> item in obj)
{
    var key = item.Key;
    var value = item.Value;
    if (key == "PercentageMatch")
    {
        ((Label) e.Item.FindControl("lblMatchedPercent")).Text = 
         value.ToString();
    }
    if (key == "MatchedPerson")
    {
        foreach (KeyValuePair<string,object> aka in item)
        {

        }
    }
}

但这显然不正确。

enter image description here

1 个答案:

答案 0 :(得分:1)

我认为该值应该是另一个字典,因此您可以执行以下操作:

foreach(var aka in (IEnumerable<KeyValuePair<string, object>>)value)
{
}

另请注意,循环字典对并在键上匹配效率低下,您可以使用TryGetValue代替:

object person;
if(obj.TryGetValue("MatchedPerson", out person))
{
    foreach(var aka in (IEnumerable<KeyValuePair<string, object>>)person);
}