我有一个这样的JSON值,我需要帮助,特别是将D变量的Value放入keyValuepair中。
.exe
我正在解析这个值。
{"A":727657,"B":"72.74:hello","C":"Http","D":"Value:0,Value1:79,Value2:56,Value3:45","E":0,"F":2}
我有一个这样的构造函数。
MyJSONContructor MyJSONContructorObject = Newtonsoft.Json.JsonConvert.DeserializeObject<MyJSONContructor>(JSONValue);
我需要帮助的是变量D中的值,如果您发现其中包含多个值,我希望能够将它们放在keyValuePair中,就像这样
public MyJSONContructor(int A, string B, string C, string D, bool E,int F)
{
this.A = A;
this.B = B;
this.C = C;
this.D = D;
this.E = E;
this.F = F;
}
是否有一种简单的方法可以将它们添加到KeyValuePairs列表中,因为我们不知道Json中的D中会出现多少个键值对,所以我试图避免这样做。
List<KeyValuePair<string, string>> contentsToPost
答案 0 :(得分:4)
如何?
var myMap = new Dictionary<string,string>();
var rawArray = dValuesInSingleString.Split(',');
foreach(var arrayItem in rawArray)
{
var keyAndValueArray = arrayItem.Split(':');
myMap.Add(keyAndValueArray[0], keyAndValueArray[1]);
}
KeyValuePair在Dictionary中使用,因此要获取KeyValuePairs的列表,您可以执行以下操作:
var myList = new List<KeyValuePair<string, string>>();
foreach (KeyValuePair<string, string> k in myMap)
{
myList.Add(k);
}
答案 1 :(得分:2)
如果您对LINQ感到满意,可以这样做:
List<KeyValuePair<string, string>> kvps =
(from pair in MyJSONContructorObject.D.Split(',')
let kv = pair.Split(':')
select new KeyValuePair<string, string>(kv[0], kv[1])
).ToList();