public class Product {
public int Id { get; set; }
public string Name{ get; set; }
public DateTime CreatedDate{ get; set; }
public DateTime UpdatedDate{ get; set }
}
并希望在使用此方法序列化为json时将所有DateTime类型转换为long:
private long convertDateToLong(DateTime datetime)
{
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
long ms = (long)(datetime - epoch).TotalMilliseconds;
return ms;
}
我怎么能在asp.net web api 2中做到这一点?
修改:
我写了这段代码,但它并没有影响输出:
class DateTimeSerializer : BufferedMediaTypeFormatter
{
public DateTimeSerializer()
{
SupportedMediaTypes.Add(new MediaTypeHeaderValue("application/json"));
}
public override bool CanReadType(Type type)
{
return false;
}
public override bool CanWriteType(Type type)
{
if (type == typeof (DateTime))
return true;
else
return false;
}
public override void WriteToStream(Type type, object value, Stream writeStream, HttpContent content)
{
using (var writer = new StreamWriter(writeStream))
{
var datetime = (DateTime )value ;
if (datetime != null)
{
writer.Write(convertDateToLong(datetime));
}
}
}
private long convertDateToLong(DateTime datetime)
{
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
long ms = (long)(datetime - epoch).TotalMilliseconds;
return ms;
}
}
注册:
config.Formatters.Add(new DateTimeSerializer());
编辑2 :
目前的json:
{ "Id" : 1 , "Name" : "Sample Product" , "CreatedDate" : "2017-02-23T18:37:18.4218582+03:30" , "UpdatedDate" : "2017-02-23T18:37:18.4218582+03:30"}
期待json:
{ "Id" : 1 , "Name" : "Sample Product" , "CreatedDate" : 432309482358723 , "UpdatedDate" : 432309482358723}