--- lang: ja-jp breaks: true --- # Newtonsoft.Json 複数のコンストラクタがあるクラスをデシリアライズする `[Newtonsoft.Json.JsonConstructor]` 2021-12-19 ```csharp= public class Sample002 { private string m_name; [Newtonsoft.Json.JsonConstructor] public Sample002( string name ) : base() { this.m_name = name; } public Sample002( public Sample002( ) : base() { this.m_name = org.m_name; } public string Name { get { return this.m_name; } protected set { this.m_name = value; } } } ``` :::info 上記クラスの場合、コンストラクタに`[Newtonsoft.Json.JsonConstructor]`属性を付加しないとデシリアライズ出来ない。 ::: ```csharp= Formatting formatting = Formatting.Indented; string json = JsonConvert.SerializeObject(sample002, formatting); Console.WriteLine(json); var settings = new JsonSerializerSettings { }; var dec = JsonConvert.DeserializeObject<Sample002>(json, settings); Console.WriteLine(JsonConvert.SerializeObject(dec, formatting)); ``` ###### tags: `Newtonsoft.Json` `[Newtonsoft.Json.JsonConstructor]` `C#` `デシリアライズ`