• .net core 通过Json传datetime类型参数的问题[转发]


    现象:
    在.netcore 3.1 webapi中,使用json格式传入datetime类型参数时,会报解析失败异常,或者时间少8个小时,返回datetime类型值时返回的是utc时间;

    解决方法:
    第一步:自定义DateTime解析类

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

    DateTime?类型解析类

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

    第二步:在startup中加入此两个类:

                services.AddControllers().AddJsonOptions(config =>
                {
                    //此设定解决JsonResult中文被编码的问题
                    config.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);
    
                    config.JsonSerializerOptions.Converters.Add(new DateTimeConverter());
                    config.JsonSerializerOptions.Converters.Add(new DateTimeNullableConvert());
                })

    版权声明:本文为CSDN博主「csdmwinter」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/csdmwinter/article/details/106564464

  • 相关阅读:
    文件下载
    字符串截取
    GAMES101 作业1
    GAMES101 作业0
    常见的企业管理系统有哪些
    Spring---AoP(面向切面编程)原理学习笔记【全】
    什么是OOP(Object Oriented Programming)面向对象编程
    Spring框架之控制反转IoC(Inversion of Control)的理解
    Typora编辑器MarkDown语法
    国民经济行业分类与代码(GB/T 4754-2017、GB/T 4754-2011、GB/T 4754-2002)
  • 原文地址:https://www.cnblogs.com/wjx-blog/p/15714551.html
Copyright © 2020-2023  润新知