zoukankan      html  css  js  c++  java
  • .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这种格式

  • 相关阅读:
    宏任务与微任务
    reactnative 自定义项目的图标库
    react-native中textInput在androidTV上的焦点处理(坑篇)
    js中!!的运用
    ES6里class杂乱随笔
    浅析链式调用
    link和@import的区别
    ES2020链判断运算符?.和Null判断运算符??
    vue组件使用name属性来生成递归组件
    k8s学习——相关概念
  • 原文地址:https://www.cnblogs.com/huguodong/p/13287934.html
Copyright © 2011-2022 走看看