2014-02-19 41 views
0

因此,即時通訊順利通過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(); 
    } 
} 

我知道需要添加一些額外的代碼中的值讀取又名的,這是我所知道的是比起來價值多,有時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

+0

你能否給我們一個'json'的例子,並告訴我們你的情況到底是哪一段ract還是set? –

+0

奧雷爾,數據是奮鬥的,但我已經上傳了一個我需要實現的屏幕截圖。 – CSharpNewBee

回答

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); 
}