我们在一个MVC3项目中,使用Microsoft的JSON序列化器和JSON.NET时遇到了问题。
众所周知,DateTime在Microsoft的序列化器中基本上是有问题的,因此我们切换到JSON.NET以避免这个问题。 这很好用,但是我们正在尝试序列化的一些类是带有DataContract / DataMember属性的POCO类。 它们定义在被多处引用的程序集中。 此外,它们还具有其他未标记为DataMembers的显示属性,例如Customer。
众所周知,DateTime在Microsoft的序列化器中基本上是有问题的,因此我们切换到JSON.NET以避免这个问题。 这很好用,但是我们正在尝试序列化的一些类是带有DataContract / DataMember属性的POCO类。 它们定义在被多处引用的程序集中。 此外,它们还具有其他未标记为DataMembers的显示属性,例如Customer。
[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]
属性的类的情况?注意:在.NET中使用JavaScriptSerializer可正常处理FullName属性,但是DateTime类型会出现问题。我需要JSON.NET忽略这个类具有DataContract/DataMember属性的事实,并像如果它们不存在一样执行标准的公共字段序列化。