我有一个C#模型,当序列化为JSON时,应在JSON中呈现date属性,例如:Date(123456790)
为此,我将属性添加到DateTime属性中:
[JsonConverter(typeof(JavaScriptDateTimeConverter))]
public DateTime DateOfBirth { get; set; }
但是,当模型序列化时,生成的JSON如下所示:
{
"Member": {
"FirstName": "firstname",
"LastName": "lastname",
"UserName": "username",
"Password": "password",
"FullName": "firstname lastname",
"DateOfBirth": newDate(350546400000),
"Gender": "male",
"Email": "[email protected]"
},
"UserId": "b8a8fd7583b14d6a81bbaeb561aef765",
}
我需要它看起来像这样:
{
"Member": {
"FirstName": "firstname",
"LastName": "lastname",
"UserName": "username",
"Password": "password",
"FullName": "firstname lastname",
"DateOfBirth": "/Date(350546400000)/",
"Gender": "male",
"Email": "[email protected]"
},
"UserId": "b8a8fd7583b14d6a81bbaeb561aef765",
}
根据文档,执行此操作的属性是DateFormatHandling,它应该是MicrosoftDateFormat。
但是我不想修改所有的转换,只是这个模型...所以我试图创建一个使用该格式的自定义序列化器:
public class CustomJavaScriptDateTimeConverter : JavaScriptDateTimeConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
serializer.DateFormatHandling = DateFormatHandling.MicrosoftDateFormat;
base.WriteJson(writer, value, serializer);
}
}
并更新了属性以使其匹配:
[JsonConverter(typeof(CustomJavaScriptDateTimeConverter))]
public DateTime DateOfBirth { get; set; }
但是,尽管单击了自定义序列化程序,并且更改了属性,但输出仍然是原始的“新日期(350546400000)”,而不是我想要的。
有人知道我在做什么错吗?
您的CustomConverter可以像这样
public class CustomJavaScriptDateTimeConverter : JavaScriptDateTimeConverter
{
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
var js = new JsonSerializer() { DateFormatHandling = DateFormatHandling.MicrosoftDateFormat };
js.Serialize(writer, value);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句