using System.Globalization; using System.Text.Json; using System.Text.Json.Serialization; namespace splitter.probe; public sealed class FlexibleIntConverter : JsonConverter { public override int? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { if (reader.TokenType == JsonTokenType.Number) return reader.GetInt32(); if (reader.TokenType == JsonTokenType.String) { var s = reader.GetString(); if (int.TryParse(s, NumberStyles.Integer, CultureInfo.InvariantCulture, out var v)) return v; } return null; } public override void Write(Utf8JsonWriter writer, int? value, JsonSerializerOptions options) { if (value.HasValue) writer.WriteNumberValue(value.Value); else writer.WriteNullValue(); } }