想知道是否有私有构造函数并使用新的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, 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);
答案 0 :(得分:1)
它会显示the answer is "No," or at least, "Not Yet"。
这是 [System.Text.Json] v1的System.Text.Json序列化程序的已知限制。我们计划在将来对此提供支持。 -ashonkhan
您可以为此编写一个custom converter ...对于 [ASP.NET Core] 3.0版本,没有计划的反序列化期间额外的支持来调用非默认构造函数。 。这将必须由自定义转换器来完成。 -steveharter
所链接的自定义转换器选项将允许您使用要做的来构建对象的任何API,但是与Newtonsoft.Json或Entity Framework可以通过以下方式实现的功能不同摆弄反射和私有构造函数,所以可能不是您想要的。
答案 1 :(得分:0)
你需要使用一个 JsonConstructor 属性
检查下面的链接