【发布时间】:2020-10-15 14:30:19
【问题描述】:
Json.NET 行为可以由属性定义:使用默认值,或者如果 json 有效负载不包含所需属性,则仅抛出异常。
然而,System.Text.Json 序列化程序默默地什么也不做。
上课:
public sealed class Foo
{
[Required]
public int Prop {get;set;} = 10;
}
并反序列化空对象:
JsonSerializer.Deserialize<Foo>("{}");
我只是用Prop=10 获得Foo 的一个实例。
我在JsonSerializerOptions 中找不到任何设置来强制它抛出异常。有可能吗?
【问题讨论】:
-
根据required properties你应该创建自定义转换器
-
System.Text.Json 不是 Json.NET 的完全替代品。它是为速度而构建的,考虑到最小的分配,而不是功能的完整性。如果您想要验证,您可以 1) 使用 Json.NET 2) 使用 Validator 类验证对象之后 序列化或 3) 创建自定义转换器
标签: c# json .net-core system.text.json