次のクラスのJSONをデシリアライズする必要があります。
public class Test
{
public string Property { get; set; }
private Test()
{
//NOTHING TO INITIALIZE
}
public Test(string prop)
{
Property = prop;
}
}
次のようにTestのインスタンスを作成できます。
var instance = new Test("Instance");
私のJSONを次のように考えると
"{ "Property":"Instance" }"
デフォルトのコンストラクタがプライベートで、オブジェクトを取得している場合、Testクラスのオブジェクトを作成するにはどうすればよいでしょうか?プロパティがNULLです
私は Newtonsoft Json パーサーを使用しています。
ベストアンサー1
属性でマークすることで、Json.Net がプライベート コンストラクターを呼び出すようにすることができます[JsonConstructor]
。
[JsonConstructor]
private Test()
{
//NOTHING TO INITIALIZE
}
シリアライザーは、コンストラクターを呼び出した後も、パブリック セッターを使用してオブジェクトを設定することに注意してください。
別の方法として、次のConstructorHandling
設定を使用することもできます。
JsonSerializerSettings settings = new JsonSerializerSettings
{
ConstructorHandling = ConstructorHandling.AllowNonPublicDefaultConstructor
};
Test t = JsonConvert.DeserializeObject<Test>(json, settings);