使用JSON.NET将C#DateTime序列化为JSON日期

SelAromDotNet

我有一个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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将json中的日期反序列化为c#中的DateTime对象

使用 json.net 将 JSON 反序列化为 c# 中的对象

无法使用Json.Net将certian json属性反序列化为c#属性

将日期从JSON反序列化为Typescript中的日期

将JSON日期解析为C#DateTime

将 JSON 日期反序列化为 C# 对象,日期时间返回 01/01/0001

JSON.NET将DateTime.MinValue序列化为null

您是否可以告诉JSON.Net将DateTime序列化为Utc(即使未指定)?

如何获取JSON.NET将日期/时间序列化为ISO 8601?

将 json 反序列化为对象 json.net

C#Json.net将嵌套的json反序列化为字符串

直接将Json.net JSON文件反序列化为C#字典类型?

Json反序列化为对象C#Json.net

如何使用json.net将复杂的分离的(“列” /“数据”)json反序列化为c#对象

如何将JSON反序列化为.net对象

Json.NET将数组反序列化为属性

将json.net属性反序列化为大写

将JSON对象反序列化为.NET HashSet

JSON.Net将集合序列化为数组

将Json对象反序列化为.NET对象

将JSON反序列化为.net对象

将动态json反序列化为通用.NET对象

使用Newtosoft Json将Json反序列化为null

我如何使用utc +0600将json日期解析为c#datetime formate

JSON日期被序列化为错误的格式

使用JSON.Net将JSON反序列化为对象或数组

如何使用 JSON.net 将 JSON 反序列化为嵌套类?

使用JsonConverter json.net将JSON反序列化为对象列表

使用Json.NET将嵌套的JSON反序列化为平面类