[c#] Json.net serialisieren / deserialisieren abgeleitete Typen?



0 Answers

Sie müssen Type Name Handling aktivieren und das als Parameter an den (De) Serializer übergeben.

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);

Dies führt zu einer korrekten Desirialisierung der abgeleiteten Klassen. Ein Nachteil davon ist, dass es alle Objekte benennt, die Sie verwenden, so dass es die Liste benennen wird, in die Sie die Objekte einfügen.

Question

json.net (newtonsoft)
Ich schaue mir die Dokumentation an, aber ich kann nichts über diesen oder den besten Weg finden, dies zu tun.

public class Base
{
    public string Name;
}
public class Derived : Base
{
    public string Something;
}

JsonConvert.Deserialize<List<Base>>(text);

Jetzt habe ich abgeleitete Objekte in der serialisierten Liste. Wie deserialisiere ich die Liste und erhalte abgeleitete Typen zurück?




Related