Настройте JSON.NET для игнорирования атрибутов DataContract / DataMember
Мы сталкиваемся с ситуацией в проекте 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]
атрибут применяется?
Note: Использование JavaScriptSerializer в .NET прекрасно работает для свойства FullName, но DateTimes не работают. Мне нужно, чтобы JSON.NET игнорировал тот факт, что этот класс имеет атрибуты DataContract / DataMember, и просто выполнял стандартную сериализацию открытых полей, как если бы их там не было.