在c#中使用ajax发送密钥对数组对象

时间:2016-10-12 10:13:41

标签: c# arrays json ajax object

我正在尝试使用ajax发送基于密钥对的数组对象,此处数组是动态创建的

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

以上是json格式的数据,我发送给方法并能够接收它。在c#end 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"...

2 个答案:

答案 0 :(得分:1)

您需要从col反序列化值。使用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; }
}

答案 1 :(得分:0)

我认为你可以做到或从中得到这个想法:

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