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

  • 相关阅读:
    Maven在dos窗口中的命令
    11. Spring Boot JPA 连接数据库
    2.JPA学习总结
    1.JPA概要
    10.Maven依赖排除 禁止依赖传递 取消依赖的方法
    10. Spring Boot JDBC 连接数据库
    9.Spring Boot实战之配置使用Logback进行日志记录
    $GLOBALS['HTTP_RAW_POST_DATA'] 和$_POST的区别
    !!!四种常见的 POST 提交数据方式(含application/json)
    PhpStorm Git 配置
  • 原文地址:https://www.cnblogs.com/wjx-blog/p/15714551.html
Copyright © 2011-2022 走看看