Мы сталкиваемся с ситуацией в проекте MVC3 с сериализаторами Microsoft JSON и JSON.NET.
Все знают, что DateTime в основном разбиты на сериализаторы Microsoft, поэтому мы перешли на JSON.NET, чтобы избежать этой проблемы. Это отлично работает, за исключением того, что некоторые из классов, которые мы пытаемся сериализовать, это POCOs с атрибутами DataContract/DataMember. Они определены в сборке, на которую ссылаются в разных местах. Кроме того, они имеют некоторые другие свойства отображения, которые не отмечены как данные для эффективности. Например, Клиент
[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 и просто выполняет стандартную сериализацию в публичном поле, как если бы они не были там.