Я пытаюсь сериализовать/deserialize Dictionary<string, object>
, который, кажется, работает отлично, если объект является простым типом, но не работает, когда объект более сложный.Сериализация/десериализация Словарь объектов с JSON.NET
У меня есть этот класс:
public class UrlStatus
{
public int Status { get; set; }
public string Url { get; set; }
}
В моем словаре я добавить List<UrlStatus>
с ключом «Перенаправление Chain» и несколько простых строк с ключами «Статус», «Веб-сайт», «Родитель Url» , Строка Я получаю обратно из Json.NET выглядит следующим образом:
{"$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"}]}
код, я использую для сериализации выглядит как:
JsonConvert.SerializeObject(collection, Formatting.None, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Objects,
TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple
});
десериализовать я делаю:
JsonConvert.DeserializeObject<T>(collection, new JsonSerializerSettings
{
TypeNameHandling = TypeNameHandling.Objects,
TypeNameAssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple,
});
Словарь возвращается хорошо, все строки возвращаются хорошо, но список не получает должным образом десериализован. Он просто возвращается как
{[
{
"$type": "XYZ.TestFramework.Core.Entities.UrlStatus, XYZ.TestFramework.Core",
"Status": 301,
"Url": "/how_5615409_create-pdfs-using-bean.html"
}
]}
Конечно, я могу deserailize этой строки снова и я получаю правильный объект, но похоже JSON.Net должны были сделать это для меня. Ясно, что я делаю что-то неправильно, но я не знаю, что это.
Я использую Json.NET 3,5 Release 8. Я даже скачал молнию снова, чтобы убедиться. –
Просто попробовал последнюю версию 53965, все еще не работал. –
ТипNameHandling = TypeNameHandling. Все было трюком. –