From 52430c19a5c2c1b37fca872fed4ac27121d02fa9 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Sun, 7 Sep 2025 14:39:25 +0800 Subject: [PATCH] :bug: Enable JsonNumberHandling.AllowNamedFloatingPointLiterals global wide --- DysonNetwork.Develop/Startup/ServiceCollectionExtensions.cs | 3 +++ DysonNetwork.Drive/Startup/ServiceCollectionExtensions.cs | 2 ++ DysonNetwork.Pass/Auth/AuthService.cs | 2 ++ DysonNetwork.Pass/Auth/OpenId/OidcState.cs | 1 + DysonNetwork.Pusher/Connection/WebSocketPacket.cs | 3 +++ DysonNetwork.Pusher/Startup/ServiceCollectionExtensions.cs | 2 ++ DysonNetwork.Shared/Cache/CacheService.cs | 1 + DysonNetwork.Shared/Proto/GrpcTypeHelper.cs | 2 ++ DysonNetwork.Sphere/Startup/ServiceCollectionExtensions.cs | 2 ++ 9 files changed, 18 insertions(+) diff --git a/DysonNetwork.Develop/Startup/ServiceCollectionExtensions.cs b/DysonNetwork.Develop/Startup/ServiceCollectionExtensions.cs index 84f9023..216ac2e 100644 --- a/DysonNetwork.Develop/Startup/ServiceCollectionExtensions.cs +++ b/DysonNetwork.Develop/Startup/ServiceCollectionExtensions.cs @@ -3,6 +3,7 @@ using Microsoft.OpenApi.Models; using NodaTime; using NodaTime.Serialization.SystemTextJson; using System.Text.Json; +using System.Text.Json.Serialization; using DysonNetwork.Develop.Identity; using DysonNetwork.Develop.Project; using DysonNetwork.Shared.Cache; @@ -30,8 +31,10 @@ public static class ServiceCollectionExtensions services.AddControllers().AddJsonOptions(options => { + options.JsonSerializerOptions.NumberHandling = JsonNumberHandling.AllowNamedFloatingPointLiterals; options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower; options.JsonSerializerOptions.DictionaryKeyPolicy = JsonNamingPolicy.SnakeCaseLower; + options.JsonSerializerOptions.ConfigureForNodaTime(DateTimeZoneProviders.Tzdb); }); diff --git a/DysonNetwork.Drive/Startup/ServiceCollectionExtensions.cs b/DysonNetwork.Drive/Startup/ServiceCollectionExtensions.cs index 3479169..05f220e 100644 --- a/DysonNetwork.Drive/Startup/ServiceCollectionExtensions.cs +++ b/DysonNetwork.Drive/Startup/ServiceCollectionExtensions.cs @@ -1,4 +1,5 @@ using System.Text.Json; +using System.Text.Json.Serialization; using System.Threading.RateLimiting; using DysonNetwork.Shared.Cache; using Microsoft.AspNetCore.RateLimiting; @@ -40,6 +41,7 @@ public static class ServiceCollectionExtensions services.AddControllers().AddJsonOptions(options => { + options.JsonSerializerOptions.NumberHandling = JsonNumberHandling.AllowNamedFloatingPointLiterals; options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower; options.JsonSerializerOptions.DictionaryKeyPolicy = JsonNamingPolicy.SnakeCaseLower; diff --git a/DysonNetwork.Pass/Auth/AuthService.cs b/DysonNetwork.Pass/Auth/AuthService.cs index b5b8660..48b87ee 100644 --- a/DysonNetwork.Pass/Auth/AuthService.cs +++ b/DysonNetwork.Pass/Auth/AuthService.cs @@ -1,5 +1,6 @@ using System.Security.Cryptography; using System.Text.Json; +using System.Text.Json.Serialization; using DysonNetwork.Pass.Account; using DysonNetwork.Shared.Cache; using Microsoft.EntityFrameworkCore; @@ -137,6 +138,7 @@ public class AuthService( var jsonOpts = new JsonSerializerOptions { + NumberHandling = JsonNumberHandling.AllowNamedFloatingPointLiterals, PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower, DictionaryKeyPolicy = JsonNamingPolicy.SnakeCaseLower }; diff --git a/DysonNetwork.Pass/Auth/OpenId/OidcState.cs b/DysonNetwork.Pass/Auth/OpenId/OidcState.cs index 4555a5e..f73ce61 100644 --- a/DysonNetwork.Pass/Auth/OpenId/OidcState.cs +++ b/DysonNetwork.Pass/Auth/OpenId/OidcState.cs @@ -84,6 +84,7 @@ public class OidcState { return JsonSerializer.Serialize(this, new JsonSerializerOptions { + NumberHandling = JsonNumberHandling.AllowNamedFloatingPointLiterals, PropertyNamingPolicy = JsonNamingPolicy.CamelCase, DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull }); diff --git a/DysonNetwork.Pusher/Connection/WebSocketPacket.cs b/DysonNetwork.Pusher/Connection/WebSocketPacket.cs index e61c956..87277d8 100644 --- a/DysonNetwork.Pusher/Connection/WebSocketPacket.cs +++ b/DysonNetwork.Pusher/Connection/WebSocketPacket.cs @@ -29,6 +29,7 @@ public class WebSocketPacket var json = System.Text.Encoding.UTF8.GetString(bytes); var jsonOpts = new JsonSerializerOptions { + NumberHandling = JsonNumberHandling.AllowNamedFloatingPointLiterals, PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower, DictionaryKeyPolicy = JsonNamingPolicy.SnakeCaseLower, }; @@ -48,6 +49,7 @@ public class WebSocketPacket var jsonOpts = new JsonSerializerOptions { + NumberHandling = JsonNumberHandling.AllowNamedFloatingPointLiterals, PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower, DictionaryKeyPolicy = JsonNamingPolicy.SnakeCaseLower, }; @@ -65,6 +67,7 @@ public class WebSocketPacket { var jsonOpts = new JsonSerializerOptions { + NumberHandling = JsonNumberHandling.AllowNamedFloatingPointLiterals, PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower, DictionaryKeyPolicy = JsonNamingPolicy.SnakeCaseLower, }.ConfigureForNodaTime(DateTimeZoneProviders.Tzdb); diff --git a/DysonNetwork.Pusher/Startup/ServiceCollectionExtensions.cs b/DysonNetwork.Pusher/Startup/ServiceCollectionExtensions.cs index 75c8dad..0a51bd2 100644 --- a/DysonNetwork.Pusher/Startup/ServiceCollectionExtensions.cs +++ b/DysonNetwork.Pusher/Startup/ServiceCollectionExtensions.cs @@ -1,4 +1,5 @@ using System.Text.Json; +using System.Text.Json.Serialization; using System.Threading.RateLimiting; using CorePush.Apple; using CorePush.Firebase; @@ -48,6 +49,7 @@ public static class ServiceCollectionExtensions // Register OIDC services services.AddControllers().AddJsonOptions(options => { + options.JsonSerializerOptions.NumberHandling = JsonNumberHandling.AllowNamedFloatingPointLiterals; options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower; options.JsonSerializerOptions.DictionaryKeyPolicy = JsonNamingPolicy.SnakeCaseLower; diff --git a/DysonNetwork.Shared/Cache/CacheService.cs b/DysonNetwork.Shared/Cache/CacheService.cs index 893ea17..1673018 100644 --- a/DysonNetwork.Shared/Cache/CacheService.cs +++ b/DysonNetwork.Shared/Cache/CacheService.cs @@ -210,6 +210,7 @@ public class CacheServiceRedis : ICacheService Modifiers = { JsonExtensions.UnignoreAllProperties() }, }, ReferenceHandler = ReferenceHandler.Preserve, + NumberHandling = JsonNumberHandling.AllowNamedFloatingPointLiterals, }; _jsonOptions.ConfigureForNodaTime(DateTimeZoneProviders.Tzdb); _jsonOptions.PropertyNameCaseInsensitive = true; diff --git a/DysonNetwork.Shared/Proto/GrpcTypeHelper.cs b/DysonNetwork.Shared/Proto/GrpcTypeHelper.cs index e30761e..9be9a3f 100644 --- a/DysonNetwork.Shared/Proto/GrpcTypeHelper.cs +++ b/DysonNetwork.Shared/Proto/GrpcTypeHelper.cs @@ -16,6 +16,7 @@ public abstract class GrpcTypeHelper { public static readonly JsonSerializerOptions? SerializerOptionsWithIgnore = new JsonSerializerOptions() { + NumberHandling = JsonNumberHandling.AllowNamedFloatingPointLiterals, PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower, DefaultIgnoreCondition = JsonIgnoreCondition.Never, PropertyNameCaseInsensitive = true, @@ -23,6 +24,7 @@ public abstract class GrpcTypeHelper public static readonly JsonSerializerOptions? SerializerOptions = new JsonSerializerOptions() { + NumberHandling = JsonNumberHandling.AllowNamedFloatingPointLiterals, PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower, DefaultIgnoreCondition = JsonIgnoreCondition.Never, PropertyNameCaseInsensitive = true, diff --git a/DysonNetwork.Sphere/Startup/ServiceCollectionExtensions.cs b/DysonNetwork.Sphere/Startup/ServiceCollectionExtensions.cs index efb7335..69ad0bc 100644 --- a/DysonNetwork.Sphere/Startup/ServiceCollectionExtensions.cs +++ b/DysonNetwork.Sphere/Startup/ServiceCollectionExtensions.cs @@ -13,6 +13,7 @@ using NodaTime; using NodaTime.Serialization.SystemTextJson; using StackExchange.Redis; using System.Text.Json; +using System.Text.Json.Serialization; using System.Threading.RateLimiting; using DysonNetwork.Shared.Cache; using DysonNetwork.Shared.GeoIp; @@ -43,6 +44,7 @@ public static class ServiceCollectionExtensions services.AddControllers().AddJsonOptions(options => { + options.JsonSerializerOptions.NumberHandling = JsonNumberHandling.AllowNamedFloatingPointLiterals; options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower; options.JsonSerializerOptions.DictionaryKeyPolicy = JsonNamingPolicy.SnakeCaseLower;