using System.Text.Json; using System.Text.Json.Serialization; using MediaBrowser.Common.Json.Converters; namespace MediaBrowser.Common.Json { /// /// Helper class for having compatible JSON throughout the codebase. /// public static class JsonDefaults { /// /// Gets the default options. /// /// /// When changing these options, update /// Jellyfin.Server/Extensions/ApiServiceCollectionExtensions.cs /// -> AddJellyfinApi /// -> AddJsonOptions. /// /// The default options. public static JsonSerializerOptions GetOptions() { var options = new JsonSerializerOptions { ReadCommentHandling = JsonCommentHandling.Disallow, WriteIndented = false }; options.Converters.Add(new JsonGuidConverter()); options.Converters.Add(new JsonInt32Converter()); options.Converters.Add(new JsonNullableInt32Converter()); options.Converters.Add(new JsonStringEnumConverter()); options.Converters.Add(new JsonNonStringKeyDictionaryConverterFactory()); options.Converters.Add(new JsonInt64Converter()); options.Converters.Add(new JsonNullableInt64Converter()); options.Converters.Add(new JsonDoubleConverter()); return options; } /// /// Gets camelCase json options. /// /// The camelCase options. public static JsonSerializerOptions GetCamelCaseOptions() { var options = GetOptions(); options.PropertyNamingPolicy = JsonNamingPolicy.CamelCase; return options; } /// /// Gets PascalCase json options. /// /// The PascalCase options. public static JsonSerializerOptions GetPascalCaseOptions() { var options = GetOptions(); options.PropertyNamingPolicy = null; return options; } } }