C# 我可以使用System.Text.Json使用私有构造函数反序列化Json吗?
想知道是否可能有私有构造函数并使用新的System.Text.Json序列化程序C# 我可以使用System.Text.Json使用私有构造函数反序列化Json吗?,c#,.net-core,system.text.json,C#,.net Core,System.text.json,想知道是否可能有私有构造函数并使用新的System.Text.Json序列化程序 public class MyModel { public string Name { get; set; } public string Data { get; set; } private MyModel() { // use me for when deserializing } public MyModel(string name, st
public class MyModel
{
public string Name { get; set; }
public string Data { get; set; }
private MyModel()
{
// use me for when deserializing
}
public MyModel(string name, string data)
{
Name = name;
Data = data;
}
}
简单的往返旅行
var model = new MyModel("doo", "doo");
var json = JsonSerializer.Serialize(model, new JsonSerializerOptions
{
WriteIndented = true
});
// no to go because of there is no parameterless constructor defined for this object.
var rehydrated = JsonSerializer.Deserialize<MyModel>(json);
var模型=新的MyModel(“doo”、“doo”);
var json=JsonSerializer.Serialize(模型,新的JsonSerializerOptions
{
WriteIndended=true
});
//没有,因为没有为此对象定义无参数构造函数。
var rehydrated=JsonSerializer.Deserialize(json);
它会出现
这是[System.Text.Json]v1的System.Text.Json序列化程序的已知限制。我们计划在将来支持这一点。
-ashonkhan
您可以为此编写一个…对于[ASP.NET Core]3.0版本,在反序列化期间没有计划对调用非默认构造函数的额外支持。这将必须由自定义转换器完成-steveharter
链接的自定义转换器选项允许您使用构建对象所需的任何API,但与Newtonsoft.Json或Entity Framework通过摆弄反射和私有构造函数所能做的不同,因此,可能不是您想要的。有没有为所有构造函数都是私有的类实现自定义转换器的示例?在.net core 3.1和.net core 5.0之间有着突破性的变化。请参见以下内容-。它还建议在无法添加公共构造函数的情况下实现JsonConverter。