在.NET Web API设置响应输出Json数据格式常用的两种方式详解
前言
在ASP.NET Core Web API中设置响应输出Json数据格式常用以下两种方式:可以通过添加System.Text.Json
或Newtonsoft.Json
JSON序列化和反序列化库在应用程序中全局设置接口响应的Json数据格式。
注意:本文示例使用的是新的Minimal API模式。
JSON序列化和反序列化库
System.Text.Json
System.Text.Json是 .NET Core 3.0 及以上版本中内置的 JSON 序列化和反序列化库。
Newtonsoft.Json
Newtonsoft.Json是一个功能强大且灵活的.NET JSON序列化和反序列化库,用于在.NET应用程序中处理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 IEnumerableGet() { 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{ 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相关学习资料、技术分享和咨询、项目框架推荐、求职和招聘资讯、以及解决问题的平台。
- 在DotNetGuide技术社区中,开发者们可以分享自己的技术文章、项目经验、学习心得、遇到的疑难技术问题以及解决方案,并且还有机会结识志同道合的开发者。
- 我们致力于构建一个积极向上、和谐友善的.NET技术交流平台。无论您是初学者还是有丰富经验的开发者,我们都希望能为您提供更多的价值和成长机会。
参考文章
- https://learn.microsoft.com/zh-cn/aspnet/core/web-api/advanced/formatting?view=aspnetcore-8.0
到此这篇关于在.NET Web API设置响应输出Json数据格式常用的两种方式的文章就介绍到这了,更多相关.NET Web API响应输出Json数据格式内容请搜索科站长以前的文章或继续浏览下面的相关文章希望大家以后多多支持科站长!
上一篇:.NET单元测试使用AutoFixture按需填充的几种方式和最佳实践记录
栏 目:ASP.NET
本文标题:在.NET Web API设置响应输出Json数据格式常用的两种方式详解
本文地址:https://www.fushidao.cc/wangluobiancheng/3255.html
您可能感兴趣的文章
- 03-31详解如何在.NET代码中使用本地部署的Deepseek语言模型
- 02-06.net core如何使用Nacos注册中心
- 01-28使用.NET8构建一个高效的时间日期帮助类
- 01-26.NET Core GC压缩(compact_phase)底层原理解析
- 01-24在ASP.NET中读写TXT文本文件的多种方法
- 01-24在ASP.NET中读写XML数据的多种方法
- 01-24.NET轻松实现Excel转PDF的三种方法详解
- 01-23.NET9 AOT部署方案详解
- 01-23.NET NativeAOT 用法指南
- 01-23iis部署前后端分离项目全过程(Vuet前端和.NET6后端)


阅读排行
推荐教程
- 03-31详解如何在.NET代码中使用本地部署的Deepseek语言模型
- 11-23移动互联网广告有哪些模式?
- 11-22.net 应对网站访问压力的方案总结
- 11-22详解ASP.NET提取多层嵌套json数据的方法
- 11-23网站投放广告如何达到最好的效果
- 11-22.net 应对网站访问压力的方案总结
- 11-23网站打开速度慢解决办法
- 11-23草根站长为什么喜欢做门户站
- 11-22ASP.NET MVC分页问题解决
- 11-22ASP.NET编程简单实现生成静态页面的方法