48 lines
2.2 KiB
C#
48 lines
2.2 KiB
C#
using System.Text.Json;
|
||
|
||
namespace Lattice.Serialization.Docking;
|
||
|
||
/// <summary>
|
||
/// Предоставляет предварительно настроенные опции сериализации JSON для различных сценариев.
|
||
/// </summary>
|
||
public static class JsonSerializerOptionsPresets
|
||
{
|
||
/// <summary>
|
||
/// Получает опции для красивого форматирования с отступами (для конфигурационных файлов).
|
||
/// </summary>
|
||
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
|
||
};
|
||
|
||
/// <summary>
|
||
/// Получает опции для компактного форматирования (для сетевой передачи).
|
||
/// </summary>
|
||
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
|
||
};
|
||
|
||
/// <summary>
|
||
/// Получает опции для строгого форматирования (для валидации схемы).
|
||
/// </summary>
|
||
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
|
||
};
|
||
} |