欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

在.NET Web API設(shè)置響應(yīng)輸出Json數(shù)據(jù)格式常用的兩種方式詳解

 更新時(shí)間:2024年07月22日 09:29:23   作者:追逐時(shí)光者  
在ASP.NET Core Web API中設(shè)置響應(yīng)輸出Json數(shù)據(jù)格式常用以下兩種方式:可以通過(guò)添加System.Text.Json或Newtonsoft.JsonJSON序列化和反序列化庫(kù)在應(yīng)用程序中全局設(shè)置接口響應(yīng)的Json數(shù)據(jù)格式,本文示例使用的是新的Minimal API模式,感興趣的朋友跟隨小編一起看看吧

前言

在ASP.NET Core Web API中設(shè)置響應(yīng)輸出Json數(shù)據(jù)格式常用以下兩種方式:可以通過(guò)添加System.Text.JsonNewtonsoft.JsonJSON序列化和反序列化庫(kù)在應(yīng)用程序中全局設(shè)置接口響應(yīng)的Json數(shù)據(jù)格式。

注意:本文示例使用的是新的Minimal API模式。

JSON序列化和反序列化庫(kù)

System.Text.Json

System.Text.Json是 .NET Core 3.0 及以上版本中內(nèi)置的 JSON 序列化和反序列化庫(kù)。

Newtonsoft.Json

Newtonsoft.Json是一個(gè)功能強(qiáng)大且靈活的.NET JSON序列化和反序列化庫(kù),用于在.NET應(yīng)用程序中處理JSON數(shù)據(jù)。

需求設(shè)置統(tǒng)一格式

  • 修改屬性名稱(chēng)的序列化方式,在.Net Core中默認(rèn)使用小駝峰序列化Json屬性參數(shù),前端想要使用與后端模型本身命名格式輸出(如:UserName)。
  • 日期類(lèi)型默認(rèn)格式化處理,設(shè)置為:yyyy-MM-dd HH:mm:ss。

未配置之前的API輸出Json數(shù)據(jù)

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[] { "追逐時(shí)光者", "小明同學(xué)", "DotNetGuide", "小藝同學(xué)", "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數(shù)據(jù)

System.Text.Json程序全局配置

添加自定義時(shí)間輸出格式類(lèi)(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 =>
            {
                //命名規(guī)則,該值指定用于將對(duì)象上的屬性名稱(chēng)轉(zhuǎn)換為另一種格式(例如駝峰大小寫(xiě))或?yàn)榭找员3謱傩悦Q(chēng)不變的策略[前端想要使用與后端模型本身命名格式輸出]。
                options.JsonSerializerOptions.PropertyNamingPolicy = null;
                //自定義輸出的時(shí)間格式
                options.JsonSerializerOptions.Converters.Add(new DateTimeJsonConverter());
            });

配置后輸出的Json數(shù)據(jù)

Newtonsoft.Json程序全局配置

說(shuō)明

在.NET 3.0及其以上的版本使用Newtonsoft.Json需要通過(guò)安裝 Microsoft.AspNetCore.Mvc.NewtonsoftJson 包來(lái)進(jìn)行配置(注意假如提示該包安裝失敗可以嘗試安裝其他版本的包)。

在Program.cs中全局配置

            builder.Services.AddControllers().AddNewtonsoftJson(options =>
            {
                //修改屬性名稱(chēng)的序列化方式[前端想要使用與后端模型本身命名格式輸出]
                options.SerializerSettings.ContractResolver = null;
                //方式1:日期類(lèi)型默認(rèn)格式化處理 
                options.SerializerSettings.Converters.Add(new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" });
                //方式2:日期類(lèi)型默認(rèn)格式化處理 
                //options.SerializerSettings.DateFormatHandling = Newtonsoft.Json.DateFormatHandling.MicrosoftDateFormat;
                //options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
            });

配置后輸出的Json數(shù)據(jù)

DotNetGuide技術(shù)社區(qū)交流群

  • DotNetGuide技術(shù)社區(qū)是一個(gè)面向.NET開(kāi)發(fā)者的開(kāi)源技術(shù)社區(qū),旨在為開(kāi)發(fā)者們提供全面的C#/.NET/.NET Core相關(guān)學(xué)習(xí)資料、技術(shù)分享和咨詢(xún)、項(xiàng)目框架推薦、求職和招聘資訊、以及解決問(wèn)題的平臺(tái)。
  • 在DotNetGuide技術(shù)社區(qū)中,開(kāi)發(fā)者們可以分享自己的技術(shù)文章、項(xiàng)目經(jīng)驗(yàn)、學(xué)習(xí)心得、遇到的疑難技術(shù)問(wèn)題以及解決方案,并且還有機(jī)會(huì)結(jié)識(shí)志同道合的開(kāi)發(fā)者。
  • 我們致力于構(gòu)建一個(gè)積極向上、和諧友善的.NET技術(shù)交流平臺(tái)。無(wú)論您是初學(xué)者還是有豐富經(jīng)驗(yàn)的開(kāi)發(fā)者,我們都希望能為您提供更多的價(jià)值和成長(zhǎng)機(jī)會(huì)。

參考文章

到此這篇關(guān)于在.NET Web API設(shè)置響應(yīng)輸出Json數(shù)據(jù)格式常用的兩種方式的文章就介紹到這了,更多相關(guān).NET Web API響應(yīng)輸出Json數(shù)據(jù)格式內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C#可以減少或不使用switch有什么方法

    C#可以減少或不使用switch有什么方法

    減少或不使用switch,大家有什么好的方法,使用工廠方法來(lái)處理,可以創(chuàng)建一個(gè)工廠接口,然后每個(gè)方法設(shè)計(jì)為一個(gè)工廠類(lèi),并實(shí)現(xiàn)工廠接口,感興趣的朋友可以了解下
    2013-03-03
  • .NET連接池的問(wèn)題詳解

    .NET連接池的問(wèn)題詳解

    這篇文章主要介紹了.NET連接池的問(wèn)題詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • asp.net水晶報(bào)表參數(shù)字段在代碼中賦值的方法

    asp.net水晶報(bào)表參數(shù)字段在代碼中賦值的方法

    這篇文章主要介紹了asp.net水晶報(bào)表參數(shù)字段在代碼中賦值的方法,實(shí)例分析了asp.net中水晶報(bào)表的使用技巧,需要的朋友可以參考下
    2015-05-05
  • .NET?6新特性試用之DateOnly和TimeOnly類(lèi)型

    .NET?6新特性試用之DateOnly和TimeOnly類(lèi)型

    這篇文章主要介紹了.NET?6新特性試用之DateOnly和TimeOnly類(lèi)型,主要介紹DateOnly和TimeOnly類(lèi)型使用過(guò)程及存在的一些過(guò)程,需要的小伙伴可以參考一下
    2022-03-03
  • asp.net中rdlc 合并行的方法

    asp.net中rdlc 合并行的方法

    要合并內(nèi)容行,我想是不可能的,我上網(wǎng)找了N久,也沒(méi)找到,囧
    2011-10-10
  • 詳解高效而穩(wěn)定的企業(yè)級(jí).NET Office 組件Spire(.NET組件介紹之二)

    詳解高效而穩(wěn)定的企業(yè)級(jí).NET Office 組件Spire(.NET組件介紹之二)

    這篇文章主要介紹了詳解高效而穩(wěn)定的企業(yè)級(jí).NET Office 組件Spire(.NET組件介紹之二),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。
    2016-12-12
  • ASP.NET Core MVC學(xué)習(xí)之視圖組件(View Component)

    ASP.NET Core MVC學(xué)習(xí)之視圖組件(View Component)

    這篇文章主要給大家介紹了關(guān)于ASP.NET Core MVC學(xué)習(xí)之視圖組件(View Component)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用ASP.NET Core MVC具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 使CheckBoxList的Attributes屬性生效(修改微軟的一個(gè)bug)

    使CheckBoxList的Attributes屬性生效(修改微軟的一個(gè)bug)

    使CheckBoxList的Attributes屬性生效(修改微軟的一個(gè)bug)...
    2007-08-08
  • 淺析.NET邏輯分層架構(gòu)

    淺析.NET邏輯分層架構(gòu)

    這篇文章主要介紹了.NET邏輯分層架構(gòu),分層架構(gòu)的三個(gè)基本層次分別為:表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問(wèn)層,感興趣的小伙伴們可以參考一下
    2015-11-11
  • ASP.NET MVC下基于異常處理的完整解決方案總結(jié)

    ASP.NET MVC下基于異常處理的完整解決方案總結(jié)

    ASP.NET MVC是一個(gè)極具可擴(kuò)展開(kāi)發(fā)框架,在這篇文章中我將通過(guò)它的擴(kuò)展實(shí)現(xiàn)與EntLib的集成,并提供一個(gè)完整的解決異常處理解決方案。
    2017-01-01

最新評(píng)論