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?