From c8cf4eac495defc71c0c967dc0b072fb65e59d29 Mon Sep 17 00:00:00 2001 From: nsnail Date: Wed, 23 Nov 2022 18:14:11 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=BA=8F=E5=88=97=E5=8C=96?= =?UTF-8?q?=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JsonSerializerOptionsExtensions.cs | 21 +++++++++++++++++++ src/NSExt/Extensions/StringExtensions.cs | 15 ++++++++----- 2 files changed, 31 insertions(+), 5 deletions(-) create mode 100644 src/NSExt/Extensions/JsonSerializerOptionsExtensions.cs diff --git a/src/NSExt/Extensions/JsonSerializerOptionsExtensions.cs b/src/NSExt/Extensions/JsonSerializerOptionsExtensions.cs new file mode 100644 index 0000000..048b217 --- /dev/null +++ b/src/NSExt/Extensions/JsonSerializerOptionsExtensions.cs @@ -0,0 +1,21 @@ +using System.Text.Encodings.Web; +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace NSExt.Extensions; + +public static class JsonSerializerOptionsExtensions +{ + public static JsonSerializerOptions NewJsonSerializerOptions(this JsonSerializerOptions me) + { + return new JsonSerializerOptions { + ReadCommentHandling = JsonCommentHandling.Skip, + AllowTrailingCommas = true, + DictionaryKeyPolicy = JsonNamingPolicy.CamelCase, + PropertyNamingPolicy = JsonNamingPolicy.CamelCase, + Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping, + NumberHandling = JsonNumberHandling.AllowReadingFromString | JsonNumberHandling.WriteAsString, + PropertyNameCaseInsensitive = true + }; + } +} \ No newline at end of file diff --git a/src/NSExt/Extensions/StringExtensions.cs b/src/NSExt/Extensions/StringExtensions.cs index 132695c..9201f7d 100644 --- a/src/NSExt/Extensions/StringExtensions.cs +++ b/src/NSExt/Extensions/StringExtensions.cs @@ -8,6 +8,9 @@ namespace NSExt.Extensions; public static class StringExtensions { + private static readonly JsonSerializerOptions _DEFAULT_JSON_SERIALIZER_OPTIONS = + default(JsonSerializerOptions).NewJsonSerializerOptions(); + /// /// aes加密 /// @@ -428,10 +431,11 @@ public static class StringExtensions /// 反序列化一个文件获得指定类型的数据对象 /// /// 等待反序列化的json文本 + /// 序列化选项 /// 反序列化后生成的对象 - public static T Object(this string me) + public static T Object(this string me, JsonSerializerOptions options = null) { - return JsonSerializer.Deserialize(me); + return JsonSerializer.Deserialize(me, options ?? _DEFAULT_JSON_SERIALIZER_OPTIONS); } @@ -440,10 +444,11 @@ public static class StringExtensions /// /// 等待反序列化的json文本 /// 实际类型 + /// 序列化选项 /// 反序列化后生成的对象 - public static object Object(this string me, Type type) + public static object Object(this string me, Type type, JsonSerializerOptions options = null) { - return JsonSerializer.Deserialize(me, type); + return JsonSerializer.Deserialize(me, type, options ?? _DEFAULT_JSON_SERIALIZER_OPTIONS); } @@ -564,4 +569,4 @@ public static class StringExtensions .Replace("-", string.Empty) .ToLower(CultureInfo.CurrentCulture); } -} +} \ No newline at end of file