当控制器返回json数据时,DateTime类型不经过设置,默认如下:
2022-03-28T15:33:03.2972156
创建一个Converter
using System.Text.Json;
using System.Text.Json.Serialization;
namespace xxxxx
{
/// <summary>
/// 设置Json默认DateTime格式化
/// </summary>
public class DateTimeJsonConverter : JsonConverter<DateTime>
{
private readonly string Format;
public DateTimeJsonConverter(string format)
{
Format = format;
}
public override void Write(Utf8JsonWriter writer, DateTime date, JsonSerializerOptions options)
{
writer.WriteStringValue(date.ToString(Format));
}
public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
return DateTime.ParseExact(reader.GetString(), Format, null);
}
}
}
然后在Program.cs中进行设置
builder.Services.AddControllers()
.AddJsonOptions(options =>
{
//空字段不响应Response
options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;
//时间格式化响应
options.JsonSerializerOptions.Converters.Add(new DateTimeJsonConverter("yyyy-MM-dd HH:mm:ss"));
});
其中:
options.JsonSerializerOptions.DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull;
这句代码可以过滤值为null的属性