Десериализация Значения Ползунка

#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, чтобы вам не нужно было без необходимости преобразовывать его в/из строки.