WCF DataMember DateTime序列化格式
我有一个工作的WCF服务,它使用JSON作为它的RequestFormat和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;
}
类MyClassB的myDateTime属性的类型为DateTime。 这将被序列化为以下格式:“myDateTime”:“/ Date(1329919837509 + 0100)/”
我需要沟通的客户端无法处理这种格式。 它要求它是一个更传统的格式,例如:yyyy-MM-dd hh:mm:ss
是否有可能将此添加到DataMember属性? 像这样:
[DataMember format = “yyyy-MM-dd hh:mm:ss”]
public DateTime myDateTime;
提前致谢!
为什么不把它作为已经格式化的字符串传递?
也就是说,不要将DataContract中的日期作为日期。 让该成员变成一个字符串,然后按照客户需要的方式格式化字符串。
以下是已经检查过的答案的示例...
[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; }
}
上面的类定义了两个方法来处理UpdateStartDate。 一个包含可空的DateTime属性,另一个转换DateTime? 到我的服务的JSon响应字符串。
链接地址: http://www.djcxy.com/p/46645.html