You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用System.Text.Json序列化时如何让单个DateTime属性仅输出日期格式

你可以通过自定义JsonConverter + 单个属性标注[JsonConverter]特性的方式实现需求,该方案仅作用于标注的属性,不会影响其他DateTime类型属性的序列化规则。

步骤1:实现仅序列化日期的自定义转换器

using System.Text.Json;
using System.Text.Json.Serialization;

public class DateOnlyJsonConverter : JsonConverter<DateTime>
{
    public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        return DateTime.Parse(reader.GetString() ?? string.Empty);
    }

    public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
    {
        // 按要求输出yyyy-MM-dd格式的日期字符串
        writer.WriteStringValue(value.ToString("yyyy-MM-dd"));
    }
}

如果需要支持可空DateTime类型,将继承的基类改为JsonConverter<DateTime?>,对应调整读写逻辑即可。

步骤2:给目标属性单独标注转换器特性

仅给需要输出日期格式的StartDate属性加转换器标注即可:

public class Dummy
{
    [JsonPropertyName("startDate")]
    [JsonConverter(typeof(DateOnlyJsonConverter))] 
    public DateTime StartDate { get; set; }

    [JsonPropertyName("actiondatetime")]
    public DateTime ActionDateTime { get; set; }
}

运行效果

修改后执行序列化得到的结果如下,完全符合要求:

{"startDate":"2024-05-20","actiondatetime":"2024-05-20T15:22:30+08:00"}

内容的提问来源于stack exchange,提问作者Linda Lawton - DaImTo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 11:15:06