using System.Text.Json; using System.Text.Json.Serialization; using System.Text.Json.Serialization.Metadata; using JorgeSerrano.Json; namespace Recyclarr.Json; public static class GlobalJsonSerializerSettings { /// /// JSON settings used for starr service API payloads. /// public static JsonSerializerOptions Services { get; } = new() { // This makes sure that null properties, such as maxSize and preferredSize in Radarr // Quality Definitions, do not get written out to JSON request bodies. PropertyNamingPolicy = JsonNamingPolicy.CamelCase, DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, NumberHandling = JsonNumberHandling.AllowReadingFromString, TypeInfoResolver = new DefaultJsonTypeInfoResolver { Modifiers = {JsonSerializationModifiers.IgnoreNoSerializeAttribute} } }; /// /// JSON settings used by cache and other Recyclarr-owned JSON files. /// public static JsonSerializerOptions Recyclarr { get; } = new() { PropertyNamingPolicy = new JsonSnakeCaseNamingPolicy(), WriteIndented = true }; /// /// JSON settings used by Trash Guides JSON files. /// public static JsonSerializerOptions Guide { get; } = new() { PropertyNamingPolicy = new JsonSnakeCaseNamingPolicy(), NumberHandling = JsonNumberHandling.AllowReadingFromString }; }