There is a base class AudioObject , from which two classes are inherited: Audio and AudioUser . We also have the AudioList class, in which there is a List<AudioObject> field. This field can store a list of objects of mixed types: Audio and AudioUser .
public class AudioObject { } public class Audio : AudioObject { public uint id { get; set; } public string title { get; set; } } public class AudioUser : AudioObject { public string id { get; set; } public string name { get; set; } } public class AudioList { public int count { get; set; } public List<AudioObject> list { get; set; } } Let's try to serialize and decrialize the AudioList AudioList :
AudioList list = new AudioList(); list.count = 1; list.list = new List<AudioObject> { new Audio { id = 1, title = "Test"} }; string serialized = JsonConvert.SerializeObject(list); AudioList newList = JsonConvert.DeserializeObject<AudioList>(serialized); Audio audio = newList.list[0] as Audio; Serialization is successful, but deserialization returns null objects from the List<AudioObject> .
What's my mistake?