发布时间:2020-04-08 10:49:04来源:本站阅读(962)
.netcore3.0 的json格式化不再默认使用Newtonsoft.Json,而是使用自带的System.Text.Json来处理。 理由是System.Text.Json 依赖更少,效率更高。
在使用中,我需要返回的时间不是那种带T的,而是yyyy-MM-dd HH:mm:ss这种格式的,怎么做呢?自定义JSON处理。
新建类
public class JsonHelper
{
public class DateTimeConverter:JsonConverter<DateTime>
{
public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
return DateTime.Parse(reader.GetString());
}
public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
{
writer.WriteStringValue(DateHelper.Date2String(value));
}
}
public class DateTimeNullableConverter:JsonConverter<DateTime?>
{
public override DateTime? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
return string.IsNullOrEmpty(reader.GetString()) ? default(DateTime?) : DateTime.Parse(reader.GetString());
}
public override void Write(Utf8JsonWriter writer, DateTime? value, JsonSerializerOptions options)
{
writer.WriteStringValue(DateHelper.Date2String(value));
}
}
}
JsonConverter中包含 read和write的抽象方法 ,只要重写这两个方法,规定输入转换的方式和输出格式化的方法就行了。
在 setup中增加配置
services.AddControllers().AddJsonOptions(o =>
{
o.JsonSerializerOptions.Converters.Add(new JsonHelper.DateTimeConverter());
o.JsonSerializerOptions.Converters.Add(new JsonHelper.DateTimeNullableConverter());
});
这个时候再请求接口,就能正常转换日期类型了, 同样返回日期格式不是在 日期和时间中间有个 “T” 了,而是 yyyy-MM-dd HH:mm:ss正常的格式了。
关键字: json
上一篇: 无法启动网站因为需要管理特权才能绑定到主机名或端口
下一篇: windows服务安装
1657
1935
2050
1564
1468
1939
1265
1391
1865
856
9593
5996
5523
5116
4567
4274
3415
3336
3335
3269