using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.Json; using System.Text.Json.Serialization; using System.Threading.Tasks; namespace GB5Shared.UnixEpochDate { public class NullableValueTypeConverter : JsonConverter where T : struct { public override T Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { if (reader.TokenType == JsonTokenType.Null) { return default; // returns 0 for int, long, etc. } if (typeof(T) == typeof(int)) return (T)(object)reader.GetInt32(); if (typeof(T) == typeof(long)) return (T)(object)reader.GetInt64(); if (typeof(T) == typeof(double)) return (T)(object)reader.GetDouble(); throw new NotSupportedException($"Type {typeof(T)} is not supported by NullableValueTypeConverter"); } public override void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions options) { writer.WriteNumberValue(Convert.ToDouble(value)); } } }