C#json反序列化对象继承

C#json反序列化对象继承,c#,json,C#,Json,我有一个父类和一个子类,json字符串包含子类的属性,但当我做反序列化对象时,我无法获取这些属性,因为子类变成了父类 例如: class Data { public List<Parent> Parents; } class Parent { public string Foo; } class Child : Parent { public string Bar; } var data = new Data { Parents = new List&l

我有一个父类和一个子类,json字符串包含子类的属性,但当我做反序列化对象时,我无法获取这些属性,因为子类变成了父类

例如:

class Data {
    public List<Parent> Parents;
}

class Parent {
    public string Foo;
}

class Child : Parent {
    public string Bar;
}

var data = new Data { Parents = new List<Parent> { new Child{Bar = "a"} } };
Console.WriteLine(data.Parents.Count); // <= it prints 1
Console.WriteLine(data.Parents.OfType<Child>().Count()); // <= it prints 1

var dataJson = JsonConvert.SerializeObject(data);
data = JsonConvert.DeserializeObject<Data>(dataJson);

Console.WriteLine(data.Parents.Count); // <= it prints 1
Console.WriteLine(data.Parents.OfType<Child>().Count()); // <= it prints 0 instead of 1
类数据{
公开家长名单;
}
班级家长{
公共字符串Foo;
}
类子:父{
公共字符串栏;
}
var data=新数据{Parents=新列表{new Child{Bar=“a”}};

Console.WriteLine(data.Parents.Count);// 使用
JsonSerializerSettings的TypeNameHandling

var settings = new JsonSerializerSettings() { TypeNameHandling = TypeNameHandling.All };

var dataJson = JsonConvert.SerializeObject(data, settings);
data = JsonConvert.DeserializeObject<Data>(dataJson, settings);
var settings=newjsonserializersettings(){typenameholding=typenameholding.All};
var dataJson=JsonConvert.SerializeObject(数据、设置);
data=JsonConvert.DeserializeObject(dataJson,设置);