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,
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
NumberHandling = JsonNumberHandling.AllowReadingFromString
};
options.Converters.Add(new JsonGuidConverter());
options.Converters.Add(new JsonStringEnumConverter());
options.Converters.Add(new JsonNullableInt32Converter());
options.Converters.Add(new JsonNullableInt64Converter());
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;
}
}
}