WCF DataMember DateTime Serializing Format
Solution 1
Why not just pass it as an already formatted string?
That is, don't pass the date in your DataContract as a date. Make that member a string instead, and format the string the way your client it wants it.
Solution 2
Here's an example of the already checked answer...
[DataContract]
public class ProductExport
{
[DataMember]
public Guid ExportID { get; set; }
[DataMember( EmitDefaultValue = false, Name = "updateStartDate" )]
public string UpdateStartDateStr
{
get
{
if( this.UpdateStartDate.HasValue )
return this.UpdateStartDate.Value.ToUniversalTime().ToString( "s", CultureInfo.InvariantCulture );
else
return null;
}
set
{
// should implement this...
}
}
// this property is not transformed to JSon. Basically hidden
public DateTime? UpdateStartDate { get; set; }
[DataMember]
public ExportStatus Status { get; set; }
}
The class above defines two methods to handle the UpdateStartDate. One that contains the nullable DateTime property, and the other convert the DateTime? to a string for the JSon response from my service.
Brabbeldas
Updated on June 15, 2022Comments
-
Brabbeldas almost 2 years
I have a working WCF service which used JSON as its RequestFormat and ResponseFormat.
[ServiceContract] public interface IServiceJSON { [OperationContract] [WebInvoke(Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)] MyClassA echo(MyClassA oMyObject); } [DataContract] public class MyClassA { [DataMember] public string message; [DataMember] public List<MyClassB> myList; public MyClassA() { myList = new List<MyClassB>(); } } [DataContract] public class MyClassB { [DataMember] public int myInt; [DataMember] public double myDouble; [DataMember] public bool myBool; [DataMember] public DateTime myDateTime; }
The myDateTime property of class MyClassB is of type DateTime. This is being serialized to the following format: "myDateTime":"/Date(1329919837509+0100)/"
The client I need to communicate with can not deal with this format. It requires it to be a more conventional format like for example: yyyy-MM-dd hh:mm:ss
Is it somehow possible to add this to the DataMember attribute? Like so:
[DataMember format = “yyyy-MM-dd hh:mm:ss”] public DateTime myDateTime;
Thanks in advance!
-
Brabbeldas about 12 yearsCould you please explain what you mean?