Konfigurieren Sie JSON.NET so, dass DataContract / DataMember-Attribute ignoriert werden

Bei einem MVC3-Projekt stoßen wir sowohl mit den Microsoft JSON-Serialisierern als auch mit JSON.NET auf eine Situation.

Jeder weiß, dass DateTimes in den Serialisierern von Microsoft grundsätzlich fehlerhaft sind. Deshalb haben wir zu JSON.NET gewechselt, um dieses Problem zu vermeiden. Das funktioniert hervorragend, außer dass einige der Klassen, die wir serialisieren möchten, POCOs mit DataContract / DataMember-Attributen sind. Sie werden in einer Assembly definiert, auf die an mehreren Stellen verwiesen wird. Darüber hinaus verfügen sie über einige andere Anzeigeeigenschaften, die aus Effizienzgründen nicht als DataMembers gekennzeichnet sind. Zum Beispiel ein Kunde

[DataContract]
public class Customer
{
   [DataMember]
   public string FirstName { get; set;}
   [DataMember]
   public string LastName { get; set;}
   public string FullName 
   {
       get
       {  return FirstName + " " + LastName; }
   }

}

Wenn dieser Kunde über WCF weitergeleitet wird, kann der Client auf diese Assembly verweisen und den vollständigen Namen verwenden. Bei der Serialisierung mit JSON.NET wird jedoch festgestellt, dass der vollständige Name kein Name ist[DataMember] und serialisiert es nicht. Gibt es eine Option, die an JSON.NET übergeben werden kann, um es anzuweisen, die Tatsache zu ignorieren, dass eine Klasse hat[DataContract] Attribut angewendet?

Hinweis: Die Verwendung von JavaScriptSerializer in .NET funktioniert gut für die FullName-Eigenschaft, aber DateTimes sind fehlerhaft. Ich brauche JSON.NET, um die Tatsache zu ignorieren, dass diese Klasse DataContract / DataMember-Attribute hat, und einfach die Standard-Serialisierung öffentlicher Felder durchzuführen, als wäre es, wenn sie nicht da wären.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage