#c# #json
Вопрос:
Я довольно новичок в C# и работаю с newtonsoft.json. Чтобы сохранить настройки в файле json и загрузить их при следующем запуске, работает ползунок сохранения, но загрузка не работает. Ошибка: Система.Исключение InvalidCastException: «Указанное приведение недопустимо». Вот код:
Главное окно:
public void SaveSettings()
{
var settings = new Data.Settings
{
SongVolume = VolumeSlider.Value.ToString()
};
var stuffString = JsonConvert.SerializeObject(settings);
File.WriteAllText(@".utilsSettings.json", stuffString);
}
public void LoadSettings()
{
if (!File.Exists(@".utilsSettings.json"))
{
return;
}
var stuffString = File.ReadAllText(@".utilsSettings.json");
VolumeSlider.Value = (double)JsonConvert.DeserializeObject(stuffString);
}
Файл Data.Settings:
public class Settings
{
[JsonProperty("songVolume")]
public string SongVolume { get; set; }
}
Ответ №1:
Вы пытаетесь преобразовать полный файл settings.json, который выглядит как {"SongVolume": 123}
двойной.
Вам понадобится что-то вроде
public void LoadSettings()
{
if (!File.Exists(@".utilsSettings.json"))
{
return;
}
var stuffString = File.ReadAllText(@".utilsSettings.json");
var settings = JsonConvert.DeserializeObject<Data.Settings>(stuffString);
VolumeSlider.Value = Double.Parse(settings.SongVolume);
}
Возможно, вы захотите SongVolume
double
сразу же рассмотреть возможность создания свойства a, чтобы вам не нужно было без необходимости преобразовывать его в/из строки.