所以,我成功地循环遍历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)
{
}
}
}
但这显然不正确。
答案 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);
}