Я пытаюсь создать программу на C # (Visual Studio 2017), в которой вы должны ввести строку. И у вас есть строка Json, которая десериализуется в объект. У меня есть библиотеки Newtonsoft Json library для обработки моих строк и файлов Json. Но я хочу, чтобы его можно было изменить с помощью строки. Например

internal static void ChangeSettings(String Dir, string s, string[] value)
{
    String SettingsString = File.ReadAllText(Dir);

    DefaultSettings Settings = JsonConvert.DeserializeObject<DefaultSettings>(SettingsString);

}

А это мой файл класса для DefaultSettings

internal class DefaultSettings
{
    public string ReportLogChannel { get; set; }
    public string RespondReport { get; set; }
    public string AutoPrefixRulesOrTutorials { get; set; }
} 

Теперь предположим, что json - это {"ReportLogChannel":"None","RespondReport":"","AutoPrefixRulesOrTutorials":"true"} И я ввожу строку. Например, "ReportLogChannel", тогда я хочу выбрать этот ключ. А потом поменяйте его на другую строку. Так. Это для бота Discord. Сейчас. Так. В файле Json. У нас есть ключ "ReportLogChannel". Если я ввожу строку. "ReportLogChannel". Затем он выберет этот объект с помощью Settings и значения поля

-2
The Gaming Lab 11 Мар 2018 в 21:55

1 ответ

Лучший ответ

Решено! Ну наконец то. Вот что я придумал

DefaultSettings Settings = JsonConvert.DeserializeObject<DefaultSettings>(SettingsString);
Console.WriteLine(Settings.GetType().GetProperty(s).GetValue(Settings, null).ToString());
Settings.GetType().GetProperty(s).SetValue(Settings, value);

Где s - это свойство, которое я хотел получить. И значение - это строка со всеми частями строк, которые я хочу поместить в значение.

1
The Gaming Lab 12 Мар 2018 в 18:47