System.Text.Json的Json.Net JsonConstructor属性替代项
在Json.Net中,我们使用JsonConstructor属性来指示应该使用构造函数创建对象的反序列化程序System.Text.Json的Json.Net JsonConstructor属性替代项,json,json.net,deserialization,asp.net-core-3.0,system.text.json,Json,Json.net,Deserialization,Asp.net Core 3.0,System.text.json,在Json.Net中,我们使用JsonConstructor属性来指示应该使用构造函数创建对象的反序列化程序 System.Text.Json中是否有其他选项?请尝试我编写的作为System.Text.Json扩展的库,以提供多态性: 在类上添加命名空间Dahomey.Json.Attributes中定义的[JsonConstructor]属性 public class ObjectWithConstructor { public int Id { get; set; } pub
System.Text.Json中是否有其他选项?请尝试我编写的作为System.Text.Json扩展的库,以提供多态性: 在类上添加命名空间Dahomey.Json.Attributes中定义的[JsonConstructor]属性
public class ObjectWithConstructor
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
[JsonConstructor]
public ObjectWithConstructor(int id, string name)
{
Id = id;
Name = name;
}
}
通过调用JsonSerializerOptions和命名空间Dahomey.json中定义的扩展方法SetupExtensions来设置json扩展。
然后使用常规的Sytem.Text.Json API反序列化类
JsonSerializerOptions options = new JsonSerializerOptions();
options.SetupExtensions();
const string json = @"{""Id"":12,""Name"":""foo"",""Age"":13}";
ObjectWithConstructor obj = JsonSerializer.Deserialize<ObjectWithConstructor>(json, options);
JsonSerializerOptions选项=新建JsonSerializerOptions();
options.SetupExtensions();
常量字符串json=@“{”Id“:12”,“Name“:”foo“,”Age“:13}”;
ObjectWithConstructor obj=JsonSerializer.Deserialize(json,选项);
看起来这是从.NET 5.0预览版8开始添加的:
相关问题:
相关拉动请求:
当前未实现,请参阅3.0版本,在反序列化过程中,没有计划对调用非默认构造函数提供额外支持。这必须由一个自定义转换器来完成。我应该这样回答吗?