Browse Source

Don't recreate JsonSerializerOptions every time

David 5 years ago
parent
commit
9f567e6471
1 changed files with 19 additions and 11 deletions
  1. 19 11
      MediaBrowser.Common/Json/JsonDefaults.cs

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

@@ -9,6 +9,8 @@ namespace MediaBrowser.Common.Json
     /// </summary>
     public static class JsonDefaults
     {
+        private static JsonSerializerOptions _defaultOptions;
+
         /// <summary>
         /// Gets the default <see cref="JsonSerializerOptions" /> options.
         /// </summary>
@@ -21,20 +23,26 @@ namespace MediaBrowser.Common.Json
         /// <returns>The default <see cref="JsonSerializerOptions" /> options.</returns>
         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>