Я пытаюсь сериализовать словарь в json, и он не работает для меня.
это мой словарь:
public Dictionary<string, Dictionary<string, string>> roaming = new Dictionary<string,Dictionary<string, string>>();
и вот как я попытался его сериализовать:
string json = JsonConvert.SerializeObject(this.client); // the dictionary is inside client object
//write string to file
System.IO.File.WriteAllText(@"path", json);
я делаю это неправильно? (для членов типа int или string он работает отлично).
Работает отлично для меня, может быть проблема с версией библиотеки или данными, содержащимися в ней. Вот что мне удалось получить:
Простой класс "Клиент" (просто сделайте несколько простых переводов, учитывая ваш набор вложенных словарей):
public class Client
{
public Dictionary<string, Dictionary<string, string>> roaming
{
get { return this._roaming ?? (this._roaming = new Dictionary<string, Dictionary<string, string>>()); }
set { this._roaming = value; }
}
private Dictionary<string, Dictionary<string, string>> _roaming;
public Client()
{
this.roaming.Add("en", new Dictionary<string, string> {
{ "login", "login" },
{ "logout", "logout" },
{ "submit", "submit" }
});
this.roaming.Add("sp", new Dictionary<string, string> {
{ "login", "entrar" },
{ "logout", "salir" },
{ "submit", "presentar" }
});
}
}
Затем создайте экземпляр и выполните сериализацию:
Client client = new Client();
String json = JsonConvert.SerializeObject(client, Newtonsoft.Json.Formatting.Indented);
И ожидаемый результат:
{
"roaming": {
"en": {
"login": "login",
"logout": "logout",
"submit": "submit"
},
"sp": {
"login": "entrar",
"logout": "salir",
"submit": "presentar"
}
}
}