我正在尝试使用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"...
答案 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];
}