using System; using System.Buffers; using System.Text; using System.Text.Json; using System.Text.Json.Serialization; using GB5Shared.DTO.Framework.Login; using Microsoft.Extensions.Logging; namespace GB5Shared.JsonConverter { public class SafeStringConverter : JsonConverter { public override string Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { return reader.TokenType switch { JsonTokenType.String => reader.GetString()!, JsonTokenType.Number => reader.GetDouble()!.ToString()!, JsonTokenType.Null => null!, // Fallback: return JSON as text safely using the reader.ValueSpan _ => reader.HasValueSequence ? Encoding.UTF8.GetString(reader.ValueSequence.ToArray()) : Encoding.UTF8.GetString(reader.ValueSpan) }; } public override void Write(Utf8JsonWriter writer, string value, JsonSerializerOptions options) { writer.WriteStringValue(value); } } }