| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 | using System.Text.Json;using System.Text.Json.Serialization;using MediaBrowser.Common.Json.Converters;namespace MediaBrowser.Common.Json{    /// <summary>    /// Helper class for having compatible JSON throughout the codebase.    /// </summary>    public static class JsonDefaults    {        /// <summary>        /// Pascal case json profile media type.        /// </summary>        public const string PascalCaseMediaType = "application/json; profile=\"PascalCase\"";        /// <summary>        /// Camel case json profile media type.        /// </summary>        public const string CamelCaseMediaType = "application/json; profile=\"CamelCase\"";        /// <summary>        /// Gets the default <see cref="JsonSerializerOptions" /> options.        /// </summary>        /// <remarks>        /// When changing these options, update        ///     Jellyfin.Server/Extensions/ApiServiceCollectionExtensions.cs        ///         -> AddJellyfinApi        ///             -> AddJsonOptions.        /// </remarks>        /// <returns>The default <see cref="JsonSerializerOptions" /> options.</returns>        public static JsonSerializerOptions GetOptions()        {            var options = new JsonSerializerOptions            {                ReadCommentHandling = JsonCommentHandling.Disallow,                WriteIndented = false,                DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,                NumberHandling = JsonNumberHandling.AllowReadingFromString            };            options.Converters.Add(new JsonGuidConverter());            options.Converters.Add(new JsonStringEnumConverter());            options.Converters.Add(new JsonNullableStructConverterFactory());            return options;        }        /// <summary>        /// Gets camelCase json options.        /// </summary>        /// <returns>The camelCase <see cref="JsonSerializerOptions" /> options.</returns>        public static JsonSerializerOptions GetCamelCaseOptions()        {            var options = GetOptions();            options.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;            return options;        }        /// <summary>        /// Gets PascalCase json options.        /// </summary>        /// <returns>The PascalCase <see cref="JsonSerializerOptions" /> options.</returns>        public static JsonSerializerOptions GetPascalCaseOptions()        {            var options = GetOptions();            options.PropertyNamingPolicy = null;            return options;        }    }}
 |