using System.Text.Json; namespace Lattice.Serialization.Docking; /// /// Предоставляет предварительно настроенные опции сериализации JSON для различных сценариев. /// public static class JsonSerializerOptionsPresets { /// /// Получает опции для красивого форматирования с отступами (для конфигурационных файлов). /// public static JsonSerializerOptions PrettyPrint => new() { WriteIndented = true, PropertyNamingPolicy = JsonNamingPolicy.CamelCase, Converters = { new System.Text.Json.Serialization.JsonStringEnumConverter() }, DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingNull, Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping }; /// /// Получает опции для компактного форматирования (для сетевой передачи). /// public static JsonSerializerOptions Compact => new() { WriteIndented = false, PropertyNamingPolicy = JsonNamingPolicy.CamelCase, Converters = { new System.Text.Json.Serialization.JsonStringEnumConverter() }, DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingDefault, Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping }; /// /// Получает опции для строгого форматирования (для валидации схемы). /// public static JsonSerializerOptions Strict => new() { WriteIndented = true, PropertyNamingPolicy = JsonNamingPolicy.CamelCase, Converters = { new System.Text.Json.Serialization.JsonStringEnumConverter() }, DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.Never, IgnoreReadOnlyProperties = false, IgnoreReadOnlyFields = true, IncludeFields = false, Encoder = System.Text.Encodings.Web.JavaScriptEncoder.Default }; }