CSharp-Single-EFCore/Bunny.WebApi/Configuration/JsonDateTimeConverter.cs

35 lines
1.4 KiB
C#
Raw Normal View History

2024-09-02 09:00:50 +08:00
using System.Text.Json;
using System.Text.Json.Serialization;
using Bunny.Dao.Common.Constant;
2024-09-02 09:00:50 +08:00
namespace Bunny.WebApi.Configuration;
2024-09-02 09:00:50 +08:00
/// <summary>
/// 自定义Json转换器用于将DateTime类型转换为JSON格式
/// </summary>
public class JsonDateTimeConverter : JsonConverter<DateTime>
{
/// <summary>
/// 重写读取方法将JSON数据转换为DateTime类型
/// </summary>
/// <param name="reader">JSON读取器</param>
/// <param name="typeToConvert">要转换的目标类型</param>
/// <param name="options">JSON序列化选项</param>
/// <returns>转换后的DateTime对象</returns>
public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
{
return DateTime.TryParse(reader.GetString(), out var date) ? date : default;
}
/// <summary>
/// 重写写入方法将DateTime对象转换为JSON格式并写入JSON写入器
/// </summary>
/// <param name="writer">JSON写入器</param>
/// <param name="value">要写入的DateTime对象</param>
/// <param name="options">JSON序列化选项</param>
public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
{
// 将DateTime对象转换为特定格式的字符串并写入JSON写入器
writer.WriteStringValue(value.ToString(LocalDateTimeConstant.DefaultDateTimeSecondFormat));
}
}