Serialisieren / Deserialisieren des Wörterbuchs von Objekten mit JSON.NET
Ich versuche ein @ zu serialisieren / deserialisierDictionary<string, object>
, was gut zu funktionieren scheint, wenn das Objekt ein einfacher Typ ist, aber nicht funktioniert, wenn das Objekt komplexer ist.
Ich habe diese Klasse:
public class UrlStatus
{
public int Status { get; set; }
public string Url { get; set; }
}
n meinem Wörterbuch füge ich ein @ hinList<UrlStatus>
mit einem Schlüssel von "Redirect Chain" und ein paar einfachen Zeichenfolgen mit den Schlüsseln "Status", "Url", "Parent Url". Die Zeichenfolge, die ich von JSON.Net erhalte, sieht folgendermaßen aus:
{"$type":"System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[System.Object, mscorlib]], mscorlib","Status":"OK","Url":"http://www.ehow.com/m/how_5615409_create-pdfs-using-bean.html","Parent Url":"http://www.ehow.com/mobilearticle35.xml","Redirect Chain":[{"$type":"Demand.TestFramework.Core.Entities.UrlStatus, Demand.TestFramework.Core","Status":301,"Url":"http://www.ehow.com/how_5615409_create-pdfs-using-bean.html"}]}
Der Code, den ich zum Serialisieren verwende, sieht folgendermaßen aus:
JsonConvert.SerializeObject(collection, Formatting.None, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Objects,
TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple
});
zur Deserialisierung mache ich:
JsonConvert.DeserializeObject<T>(collection, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Objects,
TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple,
});
Das Wörterbuch wird ordnungsgemäß wiederhergestellt, alle Zeichenfolgen werden ordnungsgemäß wiederhergestellt, die Liste wird jedoch nicht ordnungsgemäß deserialisiert. Es kommt gerade zurück als
{[
{
"$type": "XYZ.TestFramework.Core.Entities.UrlStatus, XYZ.TestFramework.Core",
"Status": 301,
"Url": "/how_5615409_create-pdfs-using-bean.html"
}
]}
Natürlich kann ich diesen String wieder deserailen und ich bekomme das richtige Objekt, aber es scheint, als hätte JSON.Net dies für mich tun sollen. Klar mache ich was falsch, aber ich weiß nicht was es ist.