I'm trying to do a polymorphic deserialization using System.Text.Json in net-8.0. Here is my schema.
[JsonPolymorphic(TypeDiscriminatorPropertyName = "type")] [JsonDerivedType(typeof(Manager), "Manager")] [JsonDerivedType(typeof(Developer), "Developer")] public class Employee { public string Type { get; set; } public string Name { get; set; } } public class Manager : Employee { public string Phone { get; set; } } public class Developer : Employee { public string Laptop { get; set; } } Here is my json.
[ { "type": "Manager", "name": "Bob", "phone": "9876543210" }, { "type": "Developer", "name": "Charlie", "laptop": "MacBook Pro" } ] and I'm doing this
var jsonFilePath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Employees.json"); var employeesContent = File.ReadAllText(jsonFilePath); var jsonSerializerOptions = new JsonSerializerOptions(); jsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; var employees = JsonSerializer.Deserialize<List<Employee>>(employeesContent, jsonSerializerOptions); And the Type property inside Employee class is always null as shown in below screen shot.
Please assist me on what I'm missing.
