Merge pull request #4855 from crobibero/cache-json-serializer
Initialize JsonSerializerOptions statically
This commit is contained in:
commit
f42208673f
|
@ -20,55 +20,69 @@ namespace MediaBrowser.Common.Json
|
|||
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
|
||||
/// </summary>
|
||||
private static readonly JsonSerializerOptions _jsonSerializerOptions = new ()
|
||||
{
|
||||
ReadCommentHandling = JsonCommentHandling.Disallow,
|
||||
WriteIndented = false,
|
||||
DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull,
|
||||
NumberHandling = JsonNumberHandling.AllowReadingFromString
|
||||
NumberHandling = JsonNumberHandling.AllowReadingFromString,
|
||||
Converters =
|
||||
{
|
||||
new JsonGuidConverter(),
|
||||
new JsonVersionConverter(),
|
||||
new JsonStringEnumConverter(),
|
||||
new JsonNullableStructConverterFactory(),
|
||||
new JsonBoolNumberConverter(),
|
||||
new JsonDateTimeConverter()
|
||||
}
|
||||
};
|
||||
|
||||
options.Converters.Add(new JsonGuidConverter());
|
||||
options.Converters.Add(new JsonVersionConverter());
|
||||
options.Converters.Add(new JsonStringEnumConverter());
|
||||
options.Converters.Add(new JsonNullableStructConverterFactory());
|
||||
options.Converters.Add(new JsonBoolNumberConverter());
|
||||
options.Converters.Add(new JsonDateTimeConverter());
|
||||
private static readonly JsonSerializerOptions _pascalCaseJsonSerializerOptions = new (_jsonSerializerOptions)
|
||||
{
|
||||
PropertyNamingPolicy = null
|
||||
};
|
||||
|
||||
return options;
|
||||
}
|
||||
private static readonly JsonSerializerOptions _camelCaseJsonSerializerOptions = new (_jsonSerializerOptions)
|
||||
{
|
||||
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
|
||||
};
|
||||
|
||||
/// <summary>
|
||||
/// Gets the default <see cref="JsonSerializerOptions" /> options.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// The return value must not be modified.
|
||||
/// If the defaults must be modified the author must use the copy constructor.
|
||||
/// </remarks>
|
||||
/// <returns>The default <see cref="JsonSerializerOptions" /> options.</returns>
|
||||
public static JsonSerializerOptions GetOptions()
|
||||
=> _jsonSerializerOptions;
|
||||
|
||||
/// <summary>
|
||||
/// Gets camelCase json options.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// The return value must not be modified.
|
||||
/// If the defaults must be modified the author must use the copy constructor.
|
||||
/// </remarks>
|
||||
/// <returns>The camelCase <see cref="JsonSerializerOptions" /> options.</returns>
|
||||
public static JsonSerializerOptions GetCamelCaseOptions()
|
||||
{
|
||||
var options = GetOptions();
|
||||
options.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
|
||||
return options;
|
||||
}
|
||||
=> _camelCaseJsonSerializerOptions;
|
||||
|
||||
/// <summary>
|
||||
/// Gets PascalCase json options.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// The return value must not be modified.
|
||||
/// If the defaults must be modified the author must use the copy constructor.
|
||||
/// </remarks>
|
||||
/// <returns>The PascalCase <see cref="JsonSerializerOptions" /> options.</returns>
|
||||
public static JsonSerializerOptions GetPascalCaseOptions()
|
||||
{
|
||||
var options = GetOptions();
|
||||
options.PropertyNamingPolicy = null;
|
||||
return options;
|
||||
}
|
||||
=> _pascalCaseJsonSerializerOptions;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user