using System.Text.Json; using System.Text.Json.Serialization; namespace StellaOps.Scanner.Core.Contracts; internal sealed class ScanJobIdJsonConverter : JsonConverter { public override ScanJobId Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { if (reader.TokenType != JsonTokenType.String) { throw new JsonException("Expected scan job identifier to be a string."); } var value = reader.GetString(); if (!ScanJobId.TryParse(value, out var id)) { throw new JsonException("Invalid scan job identifier."); } return id; } public override void Write(Utf8JsonWriter writer, ScanJobId value, JsonSerializerOptions options) => writer.WriteStringValue(value.ToString()); }