TimeSpanToStringJsonConverter.cs 922 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. #nullable enable
  2. using Abp.Extensions;
  3. using Newtonsoft.Json;
  4. namespace VberZero.Tools;
  5. public class TimeSpanToJsonStringConverter : JsonConverter
  6. {
  7. public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)
  8. {
  9. if (value != null)
  10. {
  11. writer.WriteValue(value.ToString());
  12. }
  13. }
  14. public override object? ReadJson(JsonReader reader, Type objectType, object? existingValue, JsonSerializer serializer)
  15. {
  16. if (reader.Value == null)
  17. {
  18. return default;
  19. }
  20. var str = (string)reader.Value;
  21. if (str.IsNullOrWhiteSpace())
  22. {
  23. return default;
  24. }
  25. return TimeSpan.Parse(str);
  26. }
  27. public override bool CanConvert(Type objectType)
  28. {
  29. return typeof(TimeSpan).IsAssignableFrom(objectType) || typeof(TimeSpan?).IsAssignableFrom(objectType);
  30. }
  31. }