diff --git a/src/Shentun.Peis.HttpApi.Host/Filter/JsonTimeSpanConverter.cs b/src/Shentun.Peis.HttpApi.Host/Filter/JsonTimeSpanConverter.cs new file mode 100644 index 0000000..900df86 --- /dev/null +++ b/src/Shentun.Peis.HttpApi.Host/Filter/JsonTimeSpanConverter.cs @@ -0,0 +1,24 @@ +using System.Text.Json; +using System; +using System.Text.Json.Serialization; + +namespace Shentun.Peis.Filter +{ + /// + /// 转换时间 + /// + public class JsonTimeSpanConverter : JsonConverter + { + public override TimeSpan Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + { + var value = reader.GetString(); + return TimeSpan.TryParse(value, out var timeSpan) ? timeSpan : new TimeSpan(); + } + + public override void Write(Utf8JsonWriter writer, TimeSpan value, JsonSerializerOptions options) + { + var timeSpanString = value.ToString(); + writer.WriteStringValue(timeSpanString); + } + } +} diff --git a/src/Shentun.Peis.HttpApi.Host/PeisHttpApiHostModule.cs b/src/Shentun.Peis.HttpApi.Host/PeisHttpApiHostModule.cs index 4a698ce..aaf9bdb 100644 --- a/src/Shentun.Peis.HttpApi.Host/PeisHttpApiHostModule.cs +++ b/src/Shentun.Peis.HttpApi.Host/PeisHttpApiHostModule.cs @@ -52,6 +52,9 @@ using Microsoft.AspNetCore.Diagnostics; using Microsoft.AspNetCore.Http; using Shentun.Peis.Filter; using Shentun.Peis.VirtualPath; +using System.Text.Encodings.Web; +using System.Text.Unicode; +using Volo.Abp.Json; namespace Shentun.Peis; [DependsOn( @@ -104,7 +107,7 @@ public class PeisHttpApiHostModule : AbpModule ConfigureCors(context, configuration); ConfigureSwaggerServices(context, configuration); - + ConfigureJsonOptions(); //全局配置api返回值中的日期默认格式 //密码策略配置 context.Services.Configure(opt => @@ -178,6 +181,31 @@ public class PeisHttpApiHostModule : AbpModule } + /// + /// 全局转换日期格式 + /// + private void ConfigureJsonOptions() + { + //context.Services.AddControllers().AddJsonOptions(options => + //{ + // options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All); + // options.JsonSerializerOptions.PropertyNamingPolicy = null; + //}); + Configure(x => + { + x.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All); + x.JsonSerializerOptions.PropertyNamingPolicy = null; + x.JsonSerializerOptions.Converters.Add(new JsonTimeSpanConverter()); + }); + + Configure(x => + { + x.DefaultDateTimeFormat = "yyyy-MM-dd HH:mm:ss"; + }); + } + + + private void ConfigureAuthentication(ServiceConfigurationContext context) { context.Services.ForwardIdentityAuthenticationForBearer(OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme);