Al intentar deserializar un objeto derivado complejo Json, que en realidad se crea al serializar un objeto de modelo de vista en .NET 5 MVC. Obtengo que las propiedades de la clase base del objeto derivado se anulen. Además, la mayoría de los elementos de la lista en Viewmodel como SelectList, Ienumnerable<> también se anulan. Intenté con un escenario de herencia simple también con 2 propiedades, desafortunadamente también falló.
Alguien puede explicar como solucionar esto.
Ejemplo
public class Address { public string Street { get; set; } public string City { get; set; } public string State { get; set; } public string PostalCode = "99999"; // initialize properties to generate sample data public Address() { } } // This will be serialized into a JSON Contact object public class Contact : Address { public int Id { get; set; } public string Name { get; set; } public DateTime? BirthDate { get; set; } public string Phone { get; set; } public Address Address { get; set; } public Contact() { } } public class ContactMain { public Contact contact { get; set; } public ContactMain() { // initialize array of objects in default constructor to generate sample data this.contact = new Contact { Id = 7113, Name = "James Norris", BirthDate = new DateTime(1977, 5, 13), Phone = "488-555-1212", Address = new Address { Street = "4627 Sunset Ave", City = "San Diego", State = "CA", PostalCode = "92115" } }; var jsonString = JsonConvert.SerializeObject(contact); }Luego tratando de deserializarlo con
JsonConvert.DeserializeObject<Contact>(jsonString);Hace que todas las propiedades de la clase Address Base sean nulas
Si desea utilizar la propiedad de la clase base para la clase derivada, puede llamarlos directamente mediante el objeto de la clase derivada. Propiedad de dirección de la clase Contact.
public class Address { public string Street { get; set; } public string City { get; set; } public string State { get; set; } public string PostalCode = "99999"; // initialize properties to generate sample data public Address() { } } // This will be serialized into a JSON Contact object public class Contact : Address { public int Id { get; set; } public string Name { get; set; } public DateTime? BirthDate { get; set; } public string Phone { get; set; } public Contact() { } } public class ContactMain { public Contact contact { get; set; } public ContactMain() { // initialize array of objects in default constructor to generate sample data this.contact = new Contact { Id = 7113, Name = "James Norris", BirthDate = new DateTime(1977, 5, 13), Phone = "488-555-1212", Street = "4627 Sunset Ave", City = "San Diego", State = "CA", PostalCode = "92115" }; var jsonString = JsonConvert.SerializeObject(contact); } }