2016-10-12 40 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]; 
}