.Net Core3.0 WebApi 項目框架搭建 十四:自定義返回Json大小寫格式


默認格式

在.net core 3中,默認的json返回格式為駝峰命名法

 

 

 有的時候,我們希望返回的全小寫或者全大寫等。當然微軟爸爸已經提供了拓展的接口。

設置返回Json名稱全小寫

新建JsonConv文件夾,新建LowercasePolicy.cs,繼JsonNamingPolicy

     /// <summary>
    /// 返回對象全小寫
    /// </summary>
    public class LowercasePolicy : JsonNamingPolicy
    {
        public override string ConvertName(string name) =>
            name.ToLower();
    }

startup.cs的ConfigureServices方法新加AddJsonOptions

            services.AddControllers(option =>
            {
                option.Filters.Add(typeof(GlobalExceptionsFilter));
            }).AddJsonOptions(option =>
            {
                //空的字段不返回
                option.JsonSerializerOptions.IgnoreNullValues = true;
                //返回json小寫
                option.JsonSerializerOptions.PropertyNamingPolicy = new LowercasePolicy();


            });

繼續測試剛才的方法,發現已經轉為小寫了

 

 格式化時間

JsonConv文件夾新建DateTimeConverter和DateTimeNullableConverter

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

        public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
        {
            writer.WriteStringValue(value.ToString("yyyy-MM-dd HH:mm:ss"));
        }
    }
 public class DateTimeNullableConverter : JsonConverter<DateTime?>
    {
        public override DateTime? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            return string.IsNullOrEmpty(reader.GetString()) ? default(DateTime?) : DateTime.Parse(reader.GetString());
        }

        public override void Write(Utf8JsonWriter writer, DateTime? value, JsonSerializerOptions options)
        {
            writer.WriteStringValue(value?.ToString("yyyy-MM-dd HH:mm:ss"));
        }
    }

AddJsonOptions添加進去

                //時間格式格式化
                option.JsonSerializerOptions.Converters.Add(new DateTimeConverter());
                option.JsonSerializerOptions.Converters.Add(new DateTimeNullableConverter());

這樣,如果我們的實體是Datetime類型那么最后輸出的就是yyyy-MM-dd HH:mm:ss這種格式


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM