objects - serialize dictionary to json c#
Json.net serialize/deserialize tipos derivados? (2)
json.net (newtonsoft)
Estoy revisando la documentación pero no puedo encontrar nada sobre esta o la mejor manera de hacerlo.
public class Base
{
public string Name;
}
public class Derived : Base
{
public string Something;
}
JsonConvert.Deserialize<List<Base>>(text);
Ahora tengo objetos derivados en la lista serializada. ¿Cómo deserializo la lista y recupero los tipos derivados?
Debe habilitar el Manejo de nombre de tipo y pasarlo al (de) serializador como parámetro de configuración.
Base object1 = new Base() { name = "Object1" };
Derived object2 = new Derived() { something = "Some other thing" };
List<Base> inheritanceList = new List<Base>() { object1, object2 };
JsonSerializerSettings settings = new JsonSerializerSettings { TypeNameHandling = TypeNameHandling.All };
string Serialized = JsonConvert.SerializeObject(inheritanceList, settings);
List<Base> deserializedList = JsonConvert.DeserializeObject<List<Base>>(Serialized, settings);
Esto dará como resultado la desirialización correcta de las clases derivadas. Un inconveniente es que nombrará todos los objetos que está utilizando, por lo que nombrará la lista en la que está colocando los objetos.
Si está almacenando el tipo en su text
(como debería ser en este escenario), puede usar el JsonSerializerSettings
.
Ver: cómo deserializar JSON en IEnumerable <BaseType> con Newtonsoft JSON.NET