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