ASP.NET Core Web API设置响应输出的Json数据格式的两种方式
前言
在ASP.NET Core Web API中设置响应输出Json数据格式有两种方式,可以通过添加System.Text.Json或Newtonsoft.JsonJSON序列化和反序列化库在应用程序中全局设置接口响应的Json数据格式,本文示例使用的是新的Minimal API模式。
JSON序列化和反序列化库
System.Text.Json
System.Text.Json是 .NET Core 3.0 及以上版本中内置的 JSON 序列化和反序列化库。
Newtonsoft.Json
Newtonsoft.Json是一个功能强大且灵活的.NET JSON序列化和反序列化库,用于在.NET应用程序中处理JSON数据。
设置Json统一格式需求
- 修改属性名称的序列化方式,在.Net Core中默认使用小驼峰序列化Json属性参数,前端想要使用与后端模型本身命名格式输出(如:UserName)。
- 日期类型默认格式化处理,设置为:yyyy-MM-dd HH:mm:ss。
未配置之前的API输出Json数据
UserInfoModel
public class UserInfoModel
{
public DateTime DateTime { get; set; }
public int NumberIndex { get; set; }
public string UserName { get; set; }
}
UserInfoController
[ApiController]
[Route("[controller]")]
public class UserInfoController : ControllerBase
{
private static readonly string[] NameList = new[] { "追逐时光者", "小明同学", "DotNetGuide", "小艺同学", "Edwin" };
[HttpGet(Name = "GetUserInfo")]
public IEnumerable<UserInfoModel> Get()
{
return Enumerable.Range(1, 5).Select(index => new UserInfoModel
{
DateTime = DateTime.Now.AddDays(index),
NumberIndex = Random.Shared.Next(-20, 55),
UserName = NameList[Random.Shared.Next(NameList.Length)]
}).ToArray();
}
}
输出Json数据

System.Text.Json程序全局配置
添加自定义时间输出格式类(DateTimeJsonConverter)
public class DateTimeJsonConverter : 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"));
}
}
在Program.cs中全局配置
builder.Services.AddControllers().AddJsonOptions(options =>
{
//命名规则,该值指定用于将对象上的属性名称转换为另一种格式(例如驼峰大小写)或为空以保持属性名称不变的策略[前端想要使用与后端模型本身命名格式输出]。
options.JsonSerializerOptions.PropertyNamingPolicy = null;
//自定义输出的时间格式
options.JsonSerializerOptions.Converters.Add(new DateTimeJsonConverter());
});
配置后输出的Json数据

Newtonsoft.Json程序全局配置
说明
在.NET 3.0及其以上的版本使用Newtonsoft.Json需要通过安装 Microsoft.AspNetCore.Mvc.NewtonsoftJson 包来进行配置(注意假如提示该包安装失败可以尝试安装其他版本的包)。

在Program.cs中全局配置
builder.Services.AddControllers().AddNewtonsoftJson(options =>
{
//修改属性名称的序列化方式[前端想要使用与后端模型本身命名格式输出]
options.SerializerSettings.ContractResolver = null;
//方式1:日期类型默认格式化处理
options.SerializerSettings.Converters.Add(new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" });
//方式2:日期类型默认格式化处理
//options.SerializerSettings.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat;
//options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
});
配置后输出的Json数据

DotNetGuide技术社区交流群
- DotNetGuide技术社区是一个面向.NET开发者的开源技术社区,旨在为开发者们提供全面的C#/.NET/.NET Core相关学习资料、技术分享和咨询、项目推荐、招聘资讯和解决问题的平台。
- 在这个社区中,开发者们可以分享自己的技术文章、项目经验、遇到的疑难技术问题以及解决方案,并且还有机会结识志同道合的开发者。
- 我们致力于构建一个积极向上、和谐友善的.NET技术交流平台,为广大.NET开发者带来更多的价值和成长机会。
参考文章
ASP.NET Core Web API设置响应输出的Json数据格式的两种方式的更多相关文章
- 支持多个版本的ASP.NET Core Web API
基本配置及说明 版本控制有助于及时推出功能,而不会破坏现有系统. 它还可以帮助为选定的客户提供额外的功能. API版本可以通过不同的方式完成,例如在URL中添加版本或通过自定义标头和通过Accept- ...
- C#实现多级子目录Zip压缩解压实例 NET4.6下的UTC时间转换 [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 asp.Net Core免费开源分布式异常日志收集框架Exceptionless安装配置以及简单使用图文教程 asp.net core异步进行新增操作并且需要判断某些字段是否重复的三种解决方案 .NET Core开发日志
C#实现多级子目录Zip压缩解压实例 参考 https://blog.csdn.net/lki_suidongdong/article/details/20942977 重点: 实现多级子目录的压缩, ...
- 或许是你应该了解的一些 ASP.NET Core Web API 使用小技巧
一.前言 在目前的软件开发的潮流中,不管是前后端分离还是服务化改造,后端更多的是通过构建 API 接口服务从而为 web.app.desktop 等各种客户端提供业务支持,如何构建一个符合规范.容易理 ...
- Asp.Net Core Web Api 使用 Swagger 生成 api 说明文档
最近使用 Asp.Net Core Web Api 开发项目服务端.Swagger 是最受欢迎的 REST APIs 文档生成工具之一,进入我的视野.以下为学习应用情况的整理. 一.Swagger 介 ...
- ASP.NET Core Web API 教程 - Project Configuration
ASP.NET Core Web API 教程 本系列文章主要参考了<Ultimate ASP.NET Core 3 Web API>一书,我对原文进行了翻译,同时适当删减.修改了一部分内 ...
- 在Mac下创建ASP.NET Core Web API
在Mac下创建ASP.NET Core Web API 这系列文章是参考了.NET Core文档和源码,可能有人要问,直接看官方的英文文档不就可以了吗,为什么还要写这些文章呢? 原因如下: 官方文档涉 ...
- 在ASP.NET Core Web API中为RESTful服务增加对HAL的支持
HAL(Hypertext Application Language,超文本应用语言)是一种RESTful API的数据格式风格,为RESTful API的设计提供了接口规范,同时也降低了客户端与服务 ...
- ASP.NET Core Web API 集成测试
本文需要您了解ASP.NET Core Web API 和 xUnit的相关知识. 这里有xUnit的介绍: https://www.cnblogs.com/cgzl/p/9178672.html#t ...
- [译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了
[译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了 本文首发自:博客园 文章地址: https://www.cnblogs.com/yilezhu/p/ ...
- .net core 微服务架构-docker的部署-包括网关服务(Ocelot)+认证服务(IdentityServer4)+应用服务(asp.net core web api)
本文主要介绍通过Docker来部署通过.Net Core开发的微服务架构,部署的微服务主要包括统一网关(使用Ocelot开发).统一认证(IdentityServer4).应用服务(asp.net c ...
随机推荐
- Dirty-Pipe Linux内核提权漏洞(CVE-2022-0847)
前言: 划水一波,哈哈,以后复现漏洞不再直接傻瓜无脑的走流程了,首先码字写加构思比较麻烦且写的不多还效率不高,现在就是当做见到了一个漏洞,在此记录一下这个漏洞,包括其来源,简单的描述,适用范围,以及其 ...
- 【升职加薪秘籍】我在服务监控方面的实践(6)-业务维度的mysql监控
大家好,我是蓝胖子,关于性能分析的视频和文章我也大大小小出了有一二十篇了,算是已经有了一个系列,之前的代码已经上传到github.com/HobbyBear/performance-analyze,接 ...
- ERP进销存系统源码
介绍 ERP进销存管理系统 软件架构 核心框架:SpringBoot 2.0.0 持久层框架:Mybatis 1.3.2 日志管理:Log4j 2.10.0 JS框架:Jquery 1.8.0 UI框 ...
- 如何保持 SSH 会话不中断?
哈喽大家好,我是咸鱼 不知道小伙伴们有没有遇到过下面的情况: 使用终端(XShell.secureCRT 或 MobaXterm 等)登录 Linux 服务器之后如果有一段时间没有进行交互,SSH 会 ...
- 创建第一个C语言文件
创建第一个C语言文件 新建=>项目=>空项目 创建.c文件 我们学的是C语言,c++就不写了 调整字体 快捷键:Ctlr + 鼠标滚轮 通过工具调整 工具库与main()函数 打开一个工具 ...
- Vue 核心技术
1.1 Vue简介 1.1.1 官网 英文官网 中文官网 1.1.2 介绍与描述 动态构建用户界面的 渐进式 JavaScript 框架 作者:尤雨溪 1.1.3 Vue的特点 遵循 MVVM 模式 ...
- CocoaPods 在iOS开发中养活了这么多项目,它到底是个啥?
对于iOS开发者而言,CocoaPods并不陌生,通过pod相关的命令操作,就可以很方便的将项目中用到的三方依赖库资源集成到项目环境中,大大的提升了开发的效率.CocoaPods作为iOS项目的包管理 ...
- linux查看IP、域名、端口的网络是否相通
linux查看IP.域名.端口的网络是否相通 1. ping # 检索当前域名对应的IP地址 ping 域名 # 查看IP是否相通 ping IP 2. tlenet # 查看指定IP的端口是否相通, ...
- ORACEL12C ORA-01033:ORACLE 正在初始化或关闭
问题:客户端报ORA-01033 原因:oracle12C CDB启动,但是可拔插的PDB实例未启动 解决办法: sqlplus / as sysdba--系统管理员登录 alter session ...
- 2023-09-30:用go语言,给你一个整数数组 nums 和一个整数 k 。 nums 仅包含 0 和 1, 每一次移动,你可以选择 相邻 两个数字并将它们交换。 请你返回使 nums 中包含 k
2023-09-30:用go语言,给你一个整数数组 nums 和一个整数 k . nums 仅包含 0 和 1, 每一次移动,你可以选择 相邻 两个数字并将它们交换. 请你返回使 nums 中包含 k ...