Search code examples
jsonwcfdatetimeserialization

WCF DataMember DateTime Serializing Format


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!


Solution

  • 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.