converting dictionary string string to json string
19,183
Try this using extension methods.
public static class Extensions
{
public static string FromDictionaryToJson(this Dictionary<string, string> dictionary)
{
var kvs = dictionary.Select(kvp => string.Format("\"{0}\":\"{1}\"", kvp.Key, string.Concat(",", kvp.Value)));
return string.Concat("{", string.Join(",", kvs), "}");
}
public static Dictionary<string, string> FromJsonToDictionary(this string json)
{
string[] keyValueArray = json.Replace("{", string.Empty).Replace("}", string.Empty).Replace("\"", string.Empty).Split(',');
return keyValueArray.ToDictionary(item => item.Split(':')[0], item => item.Split(':')[1]);
}
}
Here is how you would use them after.
class Program
{
static void Main(string[] args)
{
Dictionary<string, string> dictss = new Dictionary<string, string>();
dictss.Add("onekey", "oneval");
dictss.Add("twokey", "twoval");
dictss.Add("threekey", "threeval");
dictss.Add("fourkey", "fourval");
dictss.Add("fivekey", "fiveval");
string jsonString = dictss.FromDictionaryToJson(); //call extension method
Console.WriteLine(jsonString);
Dictionary<string, string> dictss2 = jsonString.FromJsonToDictionary(); //call extension method
foreach(KeyValuePair<string,string> kv in dictss2)
Console.WriteLine(string.Format("key={0},value={1}", kv.Key, kv.Value));
}
}
Or using plain functions
public string FromDictionaryToJson(Dictionary<string, string> dictionary)
{
var kvs = dictionary.Select(kvp => string.Format("\"{0}\":\"{1}\"", kvp.Key, string.Join(",", kvp.Value)));
return string.Concat("{", string.Join(",", kvs), "}");
}
public Dictionary<string, string> FromJsonToDictionary(string json)
{
string[] keyValueArray = json.Replace("{", string.Empty).Replace("}", string.Empty).Replace("\"", string.Empty).Split(',');
return keyValueArray.ToDictionary(item => item.Split(':')[0], item => item.Split(':')[1]);
}
Author by
Bravo11
Updated on June 27, 2022Comments
-
Bravo11 almost 2 years
How can i convert my dictionary
Dictionary<string,string> to JSON string
and then again convert from JSON string to
Dictionary<string,string> in c#?
-
rory almost 8 yearsShould it not be
var kvs = dictionary.Select(kvp => string.Format("\"{0}\":\"{1}\"", kvp.Key, kvp.Value));
? Otherwise all values are preceded by a comma... -
Mariusz Jamro over 7 yearsIn
FromJsonToDictionary
you can avoid doingsplit(':')
twice by doingkeyValueArray.Select(t => t.Split(':')).ToDictionary(item => item[0], item => item[1])
-
seddik about 7 yearsyour should trim the start when you do string.Join("," ...