using System.Text.Json; using System.Text.Json.Serialization; namespace Yi.Framework.Core.Json; /// /// DateTime JSON序列化转换器 /// public class DatetimeJsonConverter : JsonConverter { private readonly string _dateFormat; /// /// 初始化DateTime转换器 /// /// 日期格式化字符串,默认为yyyy-MM-dd HH:mm:ss public DatetimeJsonConverter(string format = "yyyy-MM-dd HH:mm:ss") { _dateFormat = format; } /// /// 从JSON读取DateTime值 /// /// JSON读取器 /// 目标类型 /// JSON序列化选项 /// DateTime值 public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { if (reader.TokenType == JsonTokenType.String) { return DateTime.TryParse(reader.GetString(), out DateTime dateTime) ? dateTime : reader.GetDateTime(); } return reader.GetDateTime(); } /// /// 将DateTime写入JSON /// /// JSON写入器 /// DateTime值 /// JSON序列化选项 public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options) { writer.WriteStringValue(value.ToString(_dateFormat)); } }