1.配置内容

  • MVC的配置项目与动态API的需要分别配置
  • 删除ABP设置中的Modifiers关于DateTimeConverter的设置
// 移除默认的JSON序列化器
Configure<AbpSystemTextJsonSerializerModifiersOptions>(options => {
   options.Modifiers.RemoveAll(c => c.Target is AbpDateTimeConverterModifier);
});
// 配置动态API使用的JSON选项
Configure<AbpSystemTextJsonSerializerOptions>(options =>
{
    ConfigureJsonOptions(options.JsonSerializerOptions);
});

// 配置MVC JSON选项
context.Services.Configure<JsonOptions>(options =>
{
    ConfigureJsonOptions(options.JsonSerializerOptions);
});

private void ConfigureJsonOptions(JsonSerializerOptions options)
{
    // 清除可能存在的默认日期转换器
    options.Converters.RemoveAll(c => c is JsonConverter<DateTime>);
    options.Converters.RemoveAll(c => c is JsonConverter<DateTime?>);
    options.Converters.RemoveAll(c => c is JsonConverter<DateTimeOffset>);
    options.Converters.RemoveAll(c => c is JsonConverter<DateTimeOffset?>);

    // 添加自定义日期转换器
    options.Converters.Add(new DateTimeConverter("yyyy-MM-dd HH:mm:ss"));
    options.Converters.Add(new DateTimeNullableConverter("yyyy-MM-dd HH:mm:ss"));
    options.Converters.Add(new DateTimeOffsetConverter("yyyy-MM-dd HH:mm:ss zzz"));
    options.Converters.Add(new DateTimeOffsetNullableConverter("yyyy-MM-dd HH:mm:ss zzz"));

    // 基本JSON配置
    options.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
    options.DictionaryKeyPolicy = JsonNamingPolicy.CamelCase;
    options.ReferenceHandler = ReferenceHandler.IgnoreCycles;
    options.DefaultIgnoreCondition = JsonIgnoreCondition.Never;
    options.PropertyNameCaseInsensitive = true;

    // 枚举处理
    options.Converters.Add(new JsonStringEnumConverter(JsonNamingPolicy.CamelCase));
}
最后修改日期: 2025年11月19日

作者