JsonConvertOverride.cs 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. using Newtonsoft.Json.Serialization;
  2. using System.Text.Json;
  3. using System.Text.Json.Serialization;
  4. namespace OASystem.API.OAMethodLib
  5. {
  6. #region 日期格式转换
  7. public class DateTimeJsonConverter : System.Text.Json.Serialization.JsonConverter<DateTime>
  8. {
  9. private readonly string Format;
  10. public DateTimeJsonConverter(string format)
  11. {
  12. Format = format;
  13. }
  14. public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
  15. {
  16. if (string.IsNullOrEmpty(reader.GetString()))
  17. {
  18. return default(DateTime);
  19. }
  20. return DateTime.ParseExact(reader.GetString(), Format, null);
  21. }
  22. public override void Write(Utf8JsonWriter writer, DateTime date, JsonSerializerOptions options)
  23. {
  24. writer.WriteStringValue(date.ToString(Format));
  25. }
  26. //public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
  27. //{
  28. // return DateTime.ParseExact(reader.GetString(), Format, null);
  29. //}
  30. }
  31. #endregion
  32. #region String null值转换(读/写)
  33. public class NullJsonConverter : System.Text.Json.Serialization.JsonConverter<string>
  34. {
  35. public override bool HandleNull => true;
  36. public override string Read(
  37. ref Utf8JsonReader reader,
  38. Type typeToConvert,
  39. JsonSerializerOptions options) =>
  40. reader.GetString() ?? "";
  41. public override void Write(
  42. Utf8JsonWriter writer,
  43. string value,
  44. JsonSerializerOptions options) =>
  45. writer.WriteStringValue(value ?? "");
  46. }
  47. #endregion
  48. #region decimal格式化
  49. ///// <summary>
  50. ///// decimal格式化
  51. ///// </summary>
  52. //public class JsonConverterDecimal : Newtonsoft.Json.JsonConverter
  53. //{
  54. // /// <summary>
  55. // /// 是否可以转换
  56. // /// </summary>
  57. // /// <param name="objectType"></param>
  58. // /// <returns></returns>
  59. // public override bool CanConvert(Type objectType)
  60. // {
  61. // return objectType == typeof(decimal) || objectType == typeof(decimal?);
  62. // }
  63. // public override object ReadJson(JsonReader reader, Type objectType, object existingValue, Newtonsoft.Json.JsonSerializer serializer)
  64. // {
  65. // if (reader.ValueType == null && reader.Value == null)
  66. // {
  67. // return null;
  68. // }
  69. // else
  70. // {
  71. // decimal.TryParse(reader.Value != null ? reader.Value.ToString() : "", out decimal value);
  72. // return value.ToString("F2");
  73. // }
  74. // }
  75. // public override void WriteJson(JsonWriter writer, object value, Newtonsoft.Json.JsonSerializer serializer)
  76. // {
  77. // if (value == null)
  78. // writer.WriteValue(value);
  79. // else
  80. // writer.WriteValue(value + "");
  81. // }
  82. //}
  83. #endregion
  84. }