从 JSON 值中恢复 "k1:v1,k2:v2,.." 作为键值对

Restore "k1:v1,k2:v2,.." from JSON value as Key-value pairs

我有一个这样的 JSON 值,我特别需要帮助将 D 变量的值放入键值对中。

{"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);

我有一个这样的构造函数。

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;
        }

我需要帮助的是变量 D 中的值,如果您注意到其中有多个值,我希望能够将它们放入一个 keyValuePair 中,像这样

List<KeyValuePair<string, string>> contentsToPost

有没有一种简单的方法可以将它们添加到键值对列表中,因为我们不知道 Json 中的 D 中会有多少键值对,我试图避免做这样的事情.

var list = new List<KeyValuePair<string, string>>() { 
                new KeyValuePair<string, string>("Value", 0),
                new KeyValuePair<string, string>("Value1", 79),

这个怎么样:

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);
}

如果您对 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();

Fiddle: https://dotnetfiddle.net/HHti3s