.net core webapi统一修改日期时间的返回格式

在写WebApi时,我们的日期时间往往是DateTime类型,如果直接返回,前端拿到的结果有可能会是这种格式:

下面是如何将返回的DateTime字段统一改成自定义的格式

首先创建一个自定义的JSON序列化器,定义一个继承System.Text.Json.Serialization.JsonConverter的类,实现Read和Write两个抽象方法。

public class DatetimeJsonConverter : JsonConverter<DateTime>
{
    public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        if(reader.TokenType==JsonTokenType.String)
        {
            if (DateTime.TryParse(reader.GetString(), out DateTime dateTime)) return dateTime;
        }
        return reader.GetDateTime();
    }

    public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
    {
        writer.WriteStringValue(value.ToString("yyyy-MM-dd HH:mm:ss"));
    }
}

然后在Program.cs中添加JSON序列化器

builder.Services.AddControllers().AddJsonOptions(options=> 
options.JsonSerializerOptions.Converters.Add(new DatetimeJsonConverter())
);

再调用之前的API,返回的DateTime类型字段就格式化成Write方法中的"yyyy-MM-dd HH:mm:ss"格式了。

posted @ 2024-04-02 15:29  Name=DIC  阅读(299)  评论(0编辑  收藏  举报