C#Json使用String更改密钥

时间:2018-03-11 18:55:57

标签: c# json string

我要做的是在C#(Visual Studio 2017)中创建一个您输入字符串的程序。并且你有一个Json字符串被反序列化为一个对象。我有库Newtonsoft Json库来处理我的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和字段值

选择该对象

1 个答案:

答案 0 :(得分: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是我想要获得的属性。而value是一个字符串,其中包含我想要放入值的所有字符串部分。