2016-10-12 76 views
0

我試圖使用AJAX來發送密鑰對基於陣列對象,這裏陣列被創建了我發送動​​態在c#使用AJAX發送密鑰對數組對象

["{\"key\":\"#c1\",\"value\":\"g1\"}","{\"key\":\"#c1\",\"value\":\"g2\"}", "{\"key\":\"#c2\",\"value\":\"g3\"}", "{\"key\":\"#c4\",\"value\":\"g4\"}"] 

以上內容JSON格式的數據一種方法並能夠接收它。在c#結尾Dictionary<string, string> Columns被使用。這裏的問題是,關鍵值只是數量和值包含的上述JSON數據的每個元素,如下所示,

foreach(var eachVals in columns) 
{ 
    string k = eachVals.Key; 
    string col = eachVals.Value; 

} 
迭代所述詞典eachVals.key時

是數組索引(0,1,...)和eachVals.Value包含{"key":"#c1","value":"g1"} 所以我想是單獨的密鑰,即"#c1","#c1","#c2"...和值,即"g1","g2"...

回答

1

您將需要從山坳反序列化值。使用Newtonsoft.Json,會是這個樣子:

Dictionary<string, string> columns = new Dictionary<string, string> 
     { 
      { @"0", @"{""key"": ""#c1"", ""value"":""g1"" }" }, 
      { @"1", @"{""key"": ""#c2"", ""value"":""g2"" }" } 
     }; 

     var result = columns.ToDictionary(
           column => JsonConvert.DeserializeObject<MyObj>(column.Value).key, 
           column => JsonConvert.DeserializeObject<MyObj>(column.Value).value); 

其中MyObj中是:

internal class MyObj 
{ 
    public string key { get; set; } 
    public string value { get; set; } 
} 
0

我認爲你可以做或從中得到的想法:

foreach(var eachVals in columns) 
{ 
    var e = eachVals.Value.Split(','); 
    e = e[0].Split(':'); 
    string k = e[0]; 
    string v = e[1]; 
}