Мы сталкиваемся с ситуацией в проекте MVC3 с сериализаторами Microsoft JSON и JSON.NET.
Всем известно, что DateTime в сериализаторах Microsoft в основном не работает, поэтому мы перешли на JSON.NET, чтобы избежать этой проблемы. Это отлично работает, за исключением того, что некоторые из классов, которые мы пытаемся сериализовать, являются POCO с атрибутами DataContract / DataMember. Они определены в сборке, на которую есть ссылки в нескольких местах. Кроме того, у них есть некоторые другие свойства отображения, которые для эффективности не помечены как DataMembers. Например, Заказчик
[DataContract]
public class Customer
{
[DataMember]
public string FirstName { get; set;}
[DataMember]
public string LastName { get; set;}
public string FullName
{
get
{ return FirstName + " " + LastName; }
}
}
Когда этот клиент передается через WCF, клиентская сторона может ссылаться на эту сборку и использовать FullName нормально, но при сериализации с помощью JSON.NET он видит, что FullName не является [DataMember]
, и не сериализует его. Есть ли возможность передать JSON.NET, чтобы он игнорировал тот факт, что к классу применен атрибут [DataContract]
?
Примечание. Использование JavaScriptSerializer в .NET отлично работает для свойства FullName, но DateTimes не работает. Мне нужно, чтобы JSON.NET игнорировал тот факт, что этот класс имеет атрибуты DataContract / DataMember, и просто выполнял стандартную сериализацию общедоступных полей, как если бы их не было.