У меня есть набор сложных бизнес-объектов, которые я хотел бы сериализовать для Json для использования в веб-службе. В настоящее время я использую DataContractJsonSerializer для работы с Json, но он отказывается от десериализации, потому что XmlReader по умолчанию не может обрабатывать строки Base64.Сериализация JSON.NET, если переопределить ToString
После прочтения много положительных отзывов от Json.Net, я решил попробовать. Удивительно, но самый простой случай создает ошибочный вывод, если бизнес-объект переопределяет метод ToString(). Вместо генерации JSON он просто испускает строковое значение.
Например, следующий оператор создает только строку, поскольку, как видно из сериализатора, объект рассматривается как простая строка.
public class MyClass {
public string Title{get;set;}
public override ToString(){ return Title; }
public string ToJson(){
return JsonConvert.SerializeObject(this);
}
}
Вместо форматированного вывода json все, что я получаю, это строка заголовка. Должен ли я отмечать объект каким-то особым способом, чтобы избежать этого? Поскольку иерархия бизнес-объектов включает в себя множество объектов, которые переопределяют ToString(), я бы предпочел не вводить специальные атрибуты и т. Д.
Ваш код работает отлично, только одна вещь называется 'ToJson' в методе ToString. –