From 71b7b7cc79fcb73bc9fffd114a0dd5a1472892d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=A9=99=E5=AD=90?= <454313500@qq.com> Date: Sun, 27 Oct 2024 21:48:39 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=9Aapi=E6=A0=BC=E5=BC=8F=E4=BB=8Enewt?= =?UTF-8?q?onjson=E6=94=B9=E4=B8=BA=E5=BE=AE=E8=BD=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Json/EnumStringJsonConverter.cs | 18 --------------- Yi.Abp.Net8/src/Yi.Abp.Web/YiAbpWebModule.cs | 23 +++++++++++-------- 2 files changed, 14 insertions(+), 27 deletions(-) delete mode 100644 Yi.Abp.Net8/framework/Yi.Framework.Core/Json/EnumStringJsonConverter.cs diff --git a/Yi.Abp.Net8/framework/Yi.Framework.Core/Json/EnumStringJsonConverter.cs b/Yi.Abp.Net8/framework/Yi.Framework.Core/Json/EnumStringJsonConverter.cs deleted file mode 100644 index 9e42a57b..00000000 --- a/Yi.Abp.Net8/framework/Yi.Framework.Core/Json/EnumStringJsonConverter.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System.Text.Json; -using System.Text.Json.Serialization; - -namespace Yi.Framework.Core.Json; - -public class EnumStringJsonConverter : JsonConverter -{ - public override Enum? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) - { - var enumString = reader.GetString(); - return (Enum)Enum.Parse(typeToConvert, enumString); - } - - public override void Write(Utf8JsonWriter writer, Enum value, JsonSerializerOptions options) - { - writer.WriteStringValue(value.ToString()); - } -} \ No newline at end of file diff --git a/Yi.Abp.Net8/src/Yi.Abp.Web/YiAbpWebModule.cs b/Yi.Abp.Net8/src/Yi.Abp.Web/YiAbpWebModule.cs index 5cafc749..696d0f74 100644 --- a/Yi.Abp.Net8/src/Yi.Abp.Web/YiAbpWebModule.cs +++ b/Yi.Abp.Net8/src/Yi.Abp.Web/YiAbpWebModule.cs @@ -1,10 +1,14 @@ using System.Globalization; using System.Text; +using System.Text.Json.Serialization; +using System.Text.Json.Serialization.Metadata; using System.Threading.RateLimiting; using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.AspNetCore.Cors; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.Filters; +using Microsoft.AspNetCore.Mvc.Rendering; +using Microsoft.Extensions.Options; using Microsoft.IdentityModel.Tokens; using Microsoft.OpenApi.Models; using Newtonsoft.Json.Converters; @@ -18,6 +22,8 @@ using Volo.Abp.AspNetCore.Serilog; using Volo.Abp.Auditing; using Volo.Abp.Autofac; using Volo.Abp.Caching; +using Volo.Abp.Json; +using Volo.Abp.Json.SystemTextJson; using Volo.Abp.MultiTenancy; using Volo.Abp.Swashbuckle; using Yi.Abp.Application; @@ -106,14 +112,14 @@ namespace Yi.Abp.Web // options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss"; // options.SerializerSettings.Converters.Add(new StringEnumConverter()); // }); - - //请使用微软的 - service.AddControllers().AddJsonOptions(options => - { - options.JsonSerializerOptions.Converters.Add(new DatetimeJsonConverter()); - options.JsonSerializerOptions.Converters.Add(new EnumStringJsonConverter()); - } - ); + + //请使用微软的,注意abp date又包了一层,采用DefaultJsonTypeInfoResolver统一覆盖 + Configure(options => + { + options.JsonSerializerOptions.TypeInfoResolver = new DefaultJsonTypeInfoResolver(); + options.JsonSerializerOptions.Converters.Add(new DatetimeJsonConverter()); + options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter()); + }); //设置缓存不要过期,默认滑动20分钟 Configure(cacheOptions => @@ -277,7 +283,6 @@ namespace Yi.Abp.Web public override Task OnApplicationInitializationAsync(ApplicationInitializationContext context) { var service = context.ServiceProvider; - var env = context.GetEnvironment(); var app = context.GetApplicationBuilder();