//using System; //using System.IO; //using System.Runtime.Serialization; //using System.Runtime.Serialization.Json; //using System.Text; //using Newtonsoft.Json; //namespace GB5Shared.Serialization //{ // public class SerializationJson // { // public string SerializeJson(T obj) // { // try // { // var settings = new JsonSerializerSettings // { // Converters = { new UnixEpochDateTimeConverter() }, // NullValueHandling = NullValueHandling.Ignore // }; // return JsonConvert.SerializeObject(obj, settings); // } // catch // { // throw; // } // } // } // public class UnixEpochDateTimeConverter : JsonConverter // { // public override bool CanConvert(Type objectType) // { // return objectType == typeof(DateTime) || objectType == typeof(DateTime?); // } // public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer) // { // if (value == null) // { // writer.WriteNull(); // return; // } // DateTime dateTime = (DateTime)value; // long epoch = new DateTimeOffset(dateTime.ToUniversalTime()).ToUnixTimeMilliseconds(); // writer.WriteValue(epoch); // } // public override object? ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer) // { // if (reader.TokenType == JsonToken.Null) // { // return objectType == typeof(DateTime?) ? (DateTime?)null : DateTime.MinValue; // } // if (reader.TokenType == JsonToken.Integer) // { // long epoch = (long)reader.Value!; // return DateTimeOffset.FromUnixTimeMilliseconds(epoch).UtcDateTime; // } // throw new JsonSerializationException("Invalid token type for DateTime/DateTime?"); // } // } //}