How to Convert a Dictionary to a Json String in C#

C# - Trying to convert Dictionary to JSON

Use Newtonsoft.Json to get the right json. Given you have it referenced on your project use the namespace:

using Newtonsoft.Json;

And use the JsonConvert.SerializeObject static method:

string json = JsonConvert.SerializeObject(SendData);

converting dictionary string string to json string

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

How can I deserialize JSON to a simple Dictionary<string,string> in ASP.NET?

Json.NET does this...

string json = @"{""key1"":""value1"",""key2"":""value2""}";

var values = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);

More examples: Serializing Collections with Json.NET



Related Topics



Leave a reply



Submit