using System.Text.Json; using System.Text.Json.Serialization; using PatchProbe.Shared.Models; namespace PatchProbe.Shared.Serialization; public static class PayloadSerializer { public static readonly JsonSerializerOptions Options = new() { WriteIndented = true, DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, PropertyNamingPolicy = JsonNamingPolicy.CamelCase, Converters = { new JsonStringEnumConverter(JsonNamingPolicy.CamelCase) } }; public static string Serialize(PatchProbePayload payload) => JsonSerializer.Serialize(payload, Options); public static async Task SerializeToFileAsync(PatchProbePayload payload, string path, CancellationToken cancellationToken = default) { await using var stream = File.Create(path); await JsonSerializer.SerializeAsync(stream, payload, Options, cancellationToken); } }