【C#】.net core 6.0 在program时间格式统一json格式化,并列举program默认写法和简化写法

欢迎来到《小5讲堂》
这是《C#》系列文章,每篇文章将以博主理解的角度展开讲解。
温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!

在这里插入图片描述

目录

  • 背景
  • Main入口
  • 简化写法
  • 统一时间格式
  • 相关文章

背景

在.NET Core 6.0中,对JSON的序列化和反序列化进行了许多改进,特别是与
System.Text.Json命名空间相关的功能。当涉及到在
Program.cs(或
Program.Main方法)中统一时间格式的JSON格式化时,开发者可以配置
JsonSerializerOptions来确保所有序列化的日期和时间都遵循相同的格式。

Main入口

在.NET Core 6.0中,你可以使用System.Text.Json命名空间来控制全局的JSON序列化设置,包括日期时间的格式化。你可以在Program.cs中设置全局的JsonSerializerOptions,以确保整个应用程序中的JSON序列化都按照统一的格式进行处理。
下面是一个示例,在Program.cs中设置全局的JSON序列化选项,包括自定义日期时间格式化:

using System;
using System.Text.Json;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;

public class Program
{
    public static void Main(string[] args)
    {
        CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.ConfigureAppConfiguration((hostingContext, config) =>
                {
                    // 设置全局的JSON序列化选项
                    JsonSerializerOptions jsonOptions = new JsonSerializerOptions
                    {
                        PropertyNameCaseInsensitive = true,
                        PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
                        WriteIndented = true,
                        DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingDefault
                    };
                    jsonOptions.Converters.Add(new System.Text.Json.Serialization.JsonStringEnumConverter());
                    jsonOptions.Converters.Add(new System.Text.Json.Serialization.JsonDateTimeConverter());

                    config.Services.AddSingleton(typeof(JsonSerializerOptions), jsonOptions);
                });
                webBuilder.UseStartup<Startup>();
            });
}

简化写法

从.NET Core 3.0开始,Startup.cs 类就被视为一种约定而非强制要求,并且到了.NET 6.0,这一趋势得到了进一步的简化,因为Program.cs中的Main方法和Startup类都被新的顶级语句(Top-level Statements)和最小API(Minimal APIs)所替代。

在.NET 6.0及更高版本中,Program.cs文件通常看起来非常简洁,因为它使用了顶级语句,这些语句直接定义了应用程序的启动和配置逻辑。同时,如果你正在使用Web应用程序,你可能会看到使用WebApplicationBuilder和WebApplication的新API来构建和配置你的Web应用程序,而不是使用传统的MVC或Razor Pages的Startup.cs。

以下是一个简单的.NET 6.0 Web应用程序的Program.cs示例,它没有Main方法和Startup类:

var builder = WebApplication.CreateBuilder(args);  
  
// 添加服务到容器中  
builder.Services.AddControllers();  
// 你可以继续添加其他中间件或服务配置...  
  
var app = builder.Build();  
  
// 配置HTTP请求管道  
if (!app.Environment.IsDevelopment())  
{  
    // 在生产环境中,配置中间件来捕获异常并生成错误响应  
    app.UseExceptionHandler("/Error");  
    // 使用HTTPS重定向中间件  
    app.UseHttpsRedirection();  
    app.UseStaticFiles();  
}  
  
app.UseRouting();  
  
app.UseAuthorization();  
  
app.MapControllers(); // 映射控制器路由  
  
// 其他中间件配置...  
  
app.Run(); // 运行应用程序

统一时间格式

在.NET Core 6.0中,可以通过在
JsonSerializerOptions中注册自定义的
JsonConverter,来实现全局的日期时间格式化。下面是一个示例,展示如何在.NET Core 6.0中使用
CustomDateTimeConverter进行日期时间格式化:

using System;
using System.Text.Json;
using System.Text.Json.Serialization;

// Custom DateTime Converter
public class CustomDateTimeConverter : JsonConverter<DateTime>
{
    public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
    {
        // Implement logic to read DateTime from JSON
        // This method is called when deserializing JSON
        throw new NotImplementedException();
    }

    public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options)
    {
        // Implement logic to write DateTime to JSON
        // This method is called when serializing DateTime to JSON
        writer.WriteStringValue(value.ToString("yyyy-MM-dd HH:mm:ss"));
    }
}

var builder = WebApplication.CreateBuilder(args);

// 设置全局的JSON序列化选项
builder.Services.AddControllers().AddJsonOptions(options =>
{
    options.JsonSerializerOptions.PropertyNameCaseInsensitive = true;
    options.JsonSerializerOptions.PropertyNamingPolicy = JsonNamingPolicy.CamelCase;
    options.JsonSerializerOptions.WriteIndented = true;
    options.JsonSerializerOptions.DefaultIgnoreCondition = System.Text.Json.Serialization.JsonIgnoreCondition.WhenWritingDefault;
    options.JsonSerializerOptions.Converters.Add(new JsonStringEnumConverter());
    options.JsonSerializerOptions.Converters.Add(new CustomDateTimeConverter());
});

var app = builder.Build();

// 注册中间件和路由
app.UseRouting();
app.UseEndpoints(endpoints =>
{
    endpoints.MapControllers();
});

app.Run();

相关文章

【C#】.net core 6.0 在program时间格式统一json格式化,并列举program默认写法和简化写法

【C#】.net core 6.0 ApiController,API控制器方法,API接口以实体类作为接收参数应该注意的点

【C#】 SortedDictionary,查找字典中是否存在给定的关键字

【C#】.net core 6.0 MVC返回JsonResult显示API接口返回值不可被JSON反序列化

【C#】.net core 6.0 使用第三方日志插件Log4net,配置文件详细说明

【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),代码实现篇

【C#】使用代码实现龙年春晚扑克牌魔术(守岁共此时),流程描述篇

【C#】约瑟夫原理举例2个代码实现

【C#】List泛型数据集如何循环移动,最后一位移动到第一位,以此类推

【C#】获取文本中的链接,通过正则表达式的方法获取以及优化兼容多种格式

温故而知新,不同阶段重温知识点,会有不一样的认识和理解,博主将巩固一遍知识点,并以实践方式和大家分享,若能有所帮助和收获,这将是博主最大的创作动力和荣幸。也期待认识更多优秀新老博主。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/636301.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于xilinx fpga RFSOC系列的Ultrascale+ RF Data Converter ip详解说明

目录 1 概述2 IP功能2.1 ADC性能2.2 DAC性能3 IP端口4 代码框架4.1 ADC功能框图4.2 DAC功能框图5 收发数据时序5.1 ADC数据格式5.2 DAC数据格式6 时钟配置6.1 ADC/DAC参考时钟7 数据格式配置模式7.1 ADC的配置模式7.1.1 Real -> real;7.1.2 Real ->IQ;7.1.3 IQ -> IQ;…

Potree点云手册

兄弟们整理和收集资料不容易&#xff0c;请关注手册&#xff01;&#xff01; Potree 以其高显示速度而脱颖而出&#xff0c;使其成为处理大量点云数据集的绝佳选择。 我们的重点将是 Potree 提供的多样化导航和显示选项。 如果你遇到任何问题&#xff0c;请随时尝试其他浏览器…

25.zabbix升级版本4.0-5.0

zabbix5.0升级要求 环境支持 软件要求&#xff1a; php 要求&#xff1a;版本在 7.2 版本及以上&#xff1b; 数据库要求&#xff1a;mysql&#xff1a;5.5.62 及以上&#xff1b; mariadb&#xff1a;10.0.63 及以上&#xff1b; 不再支持 IBM DB2 数据库&#xff1b; 不再支…

【云原生】Kubernetes基础命令合集

目录 引言 一、命令概述 &#xff08;一&#xff09;命令分类 &#xff08;二&#xff09;基本语法 二、查看基本信息 &#xff08;一&#xff09;环境指令 1.查看版本信息 2.查看资源对象简写 3.添加补全信息 4.查看日志 5.查看集群信息 &#xff08;二&#xff0…

JDK7HashMap的并发死链问题

测试代码 注意 要在 JDK 7 下运行&#xff0c;JDK7以后否则扩容机制和 hash 的计算方法都变了 JDK7是头插法(死链产生原因)&#xff0c;JDK8是尾插法。 public static void main(String[] args) {// 测试 java 7 中哪些数字的 hash 结果相等System.out.println("长度为…

Linux中解决普通用户使用不了sudo问题

目录 sudo的使用场景sudo使用不了的原因解决方法 sudo的使用场景 之前我们介绍了文件的权限问题 如果一个普通用户想去执行一个它命令之外的权限&#xff0c;只能使用sudo 比如普通用户使用yum去安装软件&#xff0c;需要sudo yum xxxx sudo使用不了的原因 这里我们用普通用户…

Flyway SpringBoot中使用

Flyway 一、 介绍 通过版本化数据库&#xff0c;提高数据库迁移的可靠性。即启动项目时就按版本执行sql脚本&#xff0c;实现数据库自动迁移。 Flyway是一款开源的数据库版本管理工具&#xff0c;它能够实现数据库迁移和版本控制。Flyway通过SQL脚本或Java代码进行数据库变更…

Steam致富:玩免费游戏Banana获得可交易道具

最近&#xff0c;Steam平台上一款普普通通的免费游戏《Banana》引起了轰动&#xff0c;接近2万人同时在线&#xff0c;好评率高达94&#xff05;&#xff0c;究竟是什么让这款游戏如此受欢迎呢&#xff1f;原来&#xff0c;玩家们都在争相获取稀有的香蕉。 《Banana》属于点击放…

说说什么是AOP,以及AOP的具体实现场景(外卖中应用)

推荐B站&#xff1a;【Spring AOP】实际开发中到底有什么用&#xff1f;_哔哩哔哩_bilibili 一、AOP的原理 AOP即Aspect Oriented Program&#xff0c;面向切面编程&#xff0c;是面向对象编程(OOP)的一种增强模式&#xff0c;可以将项目中与业务无关的&#xff0c;却为业务模…

新一代开源爬虫平台:SpiderFlow

SpiderFlow&#xff1a;新一代爬虫平台&#xff0c;以图形化方式定义爬虫流程&#xff0c;不写代码即可完成爬虫。- 精选真开源&#xff0c;释放新价值。 概览 Spider-Flow是一个开源的、面向所有用户的Web端爬虫构建平台&#xff0c;它使用Java语言编写。该平台的核心优势在于…

微信小程序 - - - - - 使用TDesign库(微信小程序UI库)

使用TDesign库 1. 初始化依赖2. 安装TDesgin3. npm构建3. 修改 app.json 1. 初始化依赖 npm init -y2. 安装TDesgin yarn add tdesign-miniprogram -S --productionor npm install tdesign-miniprogram -S --production3. npm构建 3. 修改 app.json 将 app.json 中的 “styl…

docker 挂载运行镜像

文章目录 前言docker 挂载运行镜像1. 作用2. 命令3. 测试 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0c;实在白嫖的话&#xff0c;那欢…

SERVER ——查询(二)

目录 5. top 6. null 7. order by 8. 模糊查询&#xff1a; 9. 聚合函数 5. top top查询&#xff1a;查询表的前几行&#xff1b;下面是代码演示&#xff1a; --top&#xff08;前面的几个记录&#xff09; select top 2 * from emp; --查询表的前两列 select top 20 percent *…

【计算机毕业设计】基于SSM++jsp的网上服装销售系统【源码+lw+部署文档】

目录 第一章 绪 论 第二章 关键技术的研究 2.1 JSP技术介绍 2.2 JAVA简介 2.3 ECLIPSE 开发环境 2.4 Tomcat服务器 2.5 MySQL数据库 第三章 系统分析 3.1 系统设计目标 3.2 系统可行性分析 3.3 系统功能分析和描述 3.4系统UML用例分析 3.4.1管理员用例 3.4.2用户用例 3.5系统流…

家政服务|基于SprinBoot+vue的家政服务管理平台(源码+数据库+文档)

家政服务管理平台 目录 基于SprinBootvue的家政服务管理平台 一、前言 二、系统设计 三、系统功能设计 1前台模块设计 2后台功能模块 5.2.1管理员功能模块 5.2.2用户功能模块 5.2.3服务人员功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕…

Redis实践—全国地址信息缓存

一、背景 在涉及全国地址的应用中&#xff0c;地址信息通常被频繁地查询和使用&#xff0c;例如电商平台、物流系统等。为了提高系统性能和减少对数据库的访问压力&#xff0c;可以使用缓存来存储常用的地址信息&#xff0c;其中 Redis 是一个非常流行的选择。 本次在一个企业入…

Linux 进程相关概念

用以下指令查找正在运行的进程&#xff0c;并使用 grep 过滤出包含 "int" 的行。 "ps -aux" 显示当前系统上所有用户的进程列表&#xff0c;而 grep 命令则筛选出包含 "int" 的行。 ps -aux|grep int p代表process进程 1.什么是程序&#xff…

美国教育数据分析

文章目录 第1关&#xff1a;认识数据第2关&#xff1a;数据预处理第3关&#xff1a;数学成绩预测 第1关&#xff1a;认识数据 编程要求 根据提示&#xff0c;在右侧Begin-End区域补充代码&#xff0c;查看数据属性名称。 测试说明 程序会调用你实现的方法&#xff0c;查看数据…

【C++题解】1881. 循环输出1~100之间的每个数

问题&#xff1a;1881. 循环输出1~100之间的每个数 类型&#xff1a;循环 题目描述&#xff1a; 请循环输出 1∼100之间的每个整数&#xff0c;输出时每行输出1 个数。 比如&#xff0c;输出结果的前 10 个数是这样的&#xff1a; 1 2 3 4 5 6 7 8 9 10 …… 输入&#xff1…

新书推荐:6.1 if语句

计算机语言和人类语言类似&#xff0c;人类语言是为了解决人与人之间交流的问题&#xff0c;而计算机语言是为了解决程序员与计算机之间交流的问题。程序员编写的程序就是计算机的控制指令&#xff0c;控制计算机的运行。借助于编译工具&#xff0c;可以将各种不同的编程语言的…