基类属性如何反序列化表示具体类的Json字符串

发布时间 2023-06-17 19:44:21作者: euv

JsonConverter可以决定类型如何被序列化或反序列化。

接口属性被反序列化时,会抛出异常,因为接口没有构造函数。

JsonConvert.DeserializeObject<IVehicle>("Json字符串");
JsonConvert.DeserializeObject<List<IVehicle>>("Json字符串");
JsonConvert.DeserializeObject<Worker>("Json字符串");
class Worker
{
    public IVehicle Vehicle { get; set; }
}

基类属性反序列化时,如果Json表示的是它的派生类,那么基类属性的引用指向的是基类实例而不是派生类实例。这会丢失Json中的派生类才具有的属性的信息。

JsonConvert.DeserializeObject<Person>("表示Police的Json字符串");

上述的返回值是Person实例而不是Police类型的实例,在反序列化时,Person类不具备Json中的警号,薪资等属性会被忽略。

JsonConverter的作用

JsonConveter的作用时机