소스 검색

Don't recreate JsonSerializerOptions every time

David 5 년 전
부모
커밋
9f567e6471
1개의 변경된 파일19개의 추가작업 그리고 11개의 파일을 삭제
  1. 19 11
      MediaBrowser.Common/Json/JsonDefaults.cs

+ 19 - 11
MediaBrowser.Common/Json/JsonDefaults.cs

@@ -9,6 +9,8 @@ namespace MediaBrowser.Common.Json
     /// </summary>
     /// </summary>
     public static class JsonDefaults
     public static class JsonDefaults
     {
     {
+        private static JsonSerializerOptions _defaultOptions;
+
         /// <summary>
         /// <summary>
         /// Gets the default <see cref="JsonSerializerOptions" /> options.
         /// Gets the default <see cref="JsonSerializerOptions" /> options.
         /// </summary>
         /// </summary>
@@ -21,20 +23,26 @@ namespace MediaBrowser.Common.Json
         /// <returns>The default <see cref="JsonSerializerOptions" /> options.</returns>
         /// <returns>The default <see cref="JsonSerializerOptions" /> options.</returns>
         public static JsonSerializerOptions GetOptions()
         public static JsonSerializerOptions GetOptions()
         {
         {
-            var options = new JsonSerializerOptions
+            if (_defaultOptions == null)
             {
             {
-                ReadCommentHandling = JsonCommentHandling.Disallow,
-                WriteIndented = false
-            };
+                var options = new JsonSerializerOptions
+                {
+                    ReadCommentHandling = JsonCommentHandling.Disallow,
+                    WriteIndented = false
+                };
 
 
-            options.Converters.Add(new JsonGuidConverter());
-            options.Converters.Add(new JsonInt32Converter());
-            options.Converters.Add(new JsonStringEnumConverter());
-            options.Converters.Add(new JsonNonStringKeyDictionaryConverterFactory());
-            options.Converters.Add(new JsonInt64Converter());
-            options.Converters.Add(new JsonDoubleConverter());
+                options.Converters.Add(new JsonGuidConverter());
+                options.Converters.Add(new JsonInt32Converter());
+                options.Converters.Add(new JsonStringEnumConverter());
+                options.Converters.Add(new JsonNonStringKeyDictionaryConverterFactory());
+                options.Converters.Add(new JsonInt64Converter());
+                options.Converters.Add(new JsonDoubleConverter());
 
 
-            return options;
+                _defaultOptions = options;
+                return _defaultOptions;
+            }
+
+            return _defaultOptions;
         }
         }
 
 
         /// <summary>
         /// <summary>