.net core中 在使用NewtonsoftJson的情况下如何去掉 时分秒 返回

C#论坛 老数据
1 1157

您可以使用 Newtonsoft.Json 库中的 JsonConverter 类来实现将时间戳转换为不包含时分秒的格式。

下面是一个例子:

 
using System;
using Newtonsoft.Json;
using Newtonsoft.Json.Converters;
public class DateConverter : JsonConverter
{
    public override bool CanConvert(Type objectType)
    {
        return objectType == typeof(DateTime);
    }
    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        return DateTime.Parse(reader.Value.ToString().Split('T')[0]);
    }
    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        writer.WriteValue(((DateTime)value).ToString("yyyy-MM-dd"));
    }
}

然后,您可以使用这个转换器来序列化/反序列化您的日期:


var json = JsonConvert.SerializeObject(new { Date = DateTime.Now }, new JsonSerializerSettings
{
    Converters = new JsonConverter[] { new DateConverter() }
});

这样,您就可以在 .NET Core 中使用 Newtonsoft.Json 去掉时分秒了。


热忱回答1

  • fate sta fate sta VIP0
    2023/2/14

    如果想全局使用可以:

    在 .NET Core 中,您可以使用 Startup 类中的 ConfigureServices 方法来全局使用 JsonConverter。

    using Microsoft.AspNetCore.Builder;
    using Microsoft.AspNetCore.Hosting;
    using Microsoft.Extensions.DependencyInjection;
    using Newtonsoft.Json;
    using Newtonsoft.Json.Converters;
    public class Startup
    {
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers().AddNewtonsoftJson(options =>
            {
                options.SerializerSettings.Converters.Add(new DateConverter());
            });
        }
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            app.UseRouting();
            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }
    }

    这样,您就可以在整个应用程序中使用 JsonConverter 转换器了。


    0 回复