vs2022 搭建NET6 WebApi 接口项目《六》 返回参数配置

1、配置Json返回格式和时间格式

#region 配置返回值格式

builder.Services.AddControllers()
    .AddJsonOptions(options =>
            {
                //格式化日期时间格式
                options.JsonSerializerOptions.Converters.Add(new DatetimeJsonConverter("yyyy-MM-dd HH:mm:ss"));
                //数据格式首字母小写
                //options.JsonSerializerOptions.PropertyNamingPolicy =JsonNamingPolicy.CamelCase;
                //数据格式原样输出
                options.JsonSerializerOptions.PropertyNamingPolicy = null;
                //取消Unicode编码
                options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);
                //忽略空值
                options.JsonSerializerOptions.IgnoreNullValues = true;
                //允许额外符号
                options.JsonSerializerOptions.AllowTrailingCommas = true;
                //反序列化过程中属性名称是否使用不区分大小写的比较
                options.JsonSerializerOptions.PropertyNameCaseInsensitive = false;
            });
builder.Services.AddEndpointsApiExplorer();
#endregion

2、DatetimeJsonConverter类

/// <summary>
    /// 格式化返回的时间格式
    /// </summary>
    public class DatetimeJsonConverter : JsonConverter<DateTime>
    {
        private readonly string format;
        public DatetimeJsonConverter(string _format)
        {
            format = _format;
        }
        public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            if (reader.TokenType == JsonTokenType.String)
            {
                if (DateTime.TryParse(reader.GetString(), out DateTime date))
                    return date;
            }
            return reader.GetDateTime();
        }

        public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
        {
            writer.WriteStringValue(value.ToString(format));
        }
    }
1、配置Json返回格式和时间格式 #region 配置返回值格式 builder.Services.AddControllers() .AddJsonOptions(options => { //格式化日期时间格式 options.JsonSerializerOptions.Converters.Add(new DatetimeJsonConverter("yyyy-MM-dd HH:mm:ss")); //数据格式首字母小写 //options.JsonSerializerOptions.PropertyNamingPolicy =JsonNamingPolicy.CamelCase; //数据格式原样输出 options.JsonSerializerOptions.PropertyNamingPolicy = null; //取消Unicode编码 options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All); //忽略空值 options.JsonSerializerOptions.IgnoreNullValues = true; //允许额外符号 options.JsonSerializerOptions.AllowTrailingCommas = true; //反序列化过程中属性名称是否使用不区分大小写的比较 options.JsonSerializerOptions.PropertyNameCaseInsensitive = false; }); builder.Services.AddEndpointsApiExplorer(); #endregion 2、DatetimeJsonConverter类 /// /// 格式化返回的时间格式 /// public class DatetimeJsonConverter : JsonConverter { private readonly string format; public DatetimeJsonConverter(string _format) { format = _format; } public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) { if (reader.TokenType == JsonTokenType.String) { if (DateTime.TryParse(reader.GetString(), out DateTime date)) return date; } return reader.GetDateTime(); } public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options) { writer.WriteStringValue(value.ToString(format)); } }
经验分享 程序员 微信小程序 职场和发展