Json.NET - JSON から取得した値でインスタンスのプロパティを上書き
Json.NET で、「デフォルト値が設定してあるインスタンスのプロパティを、JSON から取得した値で上書きする」方法についてです。 結論を先に書くと JsonConvert.PopulateObject メソッドを使います。
したいことも含めて、コードを見てもらった方が早いと思うので、さっそくコードを。
まずはクラス。
class Settings { public string FontName { get; set; } public int FontSize { get; set; } public bool LineNumbers { get; set; } }
で、JSON から取得した値で、インスタンスのプロパティを上書きしてみます。
// デフォルト値が設定してある var settings = new Settings { FontName = "Consolas", FontSize = 10, LineNumbers = true, }; // FontSize と LineNumbers が指定してある JSON を使って var json = @"{ 'FontSize': 12, 'LineNumbers': false }"; // FontSize と LineNumbers だけを上書きする JsonConvert.PopulateObject(json, settings); // よし Console.WriteLine(settings.FontName); // Consolas Console.WriteLine(settings.FontSize); // 12 Console.WriteLine(settings.LineNumbers); // false
JSON に含まれていないプロパティは変更されず、JSON に含まれているプロパティだけが上書きされていますね。
DeserializeObject メソッドのサンプルは割と見かけますが、PopulateObject メソッドのサンプルはあまり見かけなかったので、ちょっと書いてみました。