.Net Core3.0 WebApi 十三:自定義返回Json大小寫格式


.Net Core3.0 WebApi 目錄

默認格式

在.net core 3中,默認的json返回格式為駝峰命名法(單駝峰)

 

  有的時候,我們希望返回的全小寫或者全大寫等。當然微軟爸爸已經提供了拓展的接口。

設置返回Json名稱全大寫(雙駝峰)

startup.cs的ConfigureServices方法新加AddJsonOptions

services.AddControllers(option =>
{
    option.Filters.Add(typeof(GlobalExceptionsFilter));
}).AddJsonOptions(options =>
{
    options.JsonSerializerOptions.PropertyNamingPolicy = null;//解決后端傳到前端全大寫
    options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);//解決后端返回數據中文被編碼
});

只要 ptions.JsonSerializerOptions.PropertyNamingPolicy = null就可以了。

 

 這樣返回的結果中,全是雙駝峰了。

設置返回Json名稱全小寫

新建CustomJsonConvert文件夾,新建LowercasePolicy.cs,繼JsonNamingPolicy

namespace WebApi.Core.Api.CustomJsonConvert
{
    /// <summary>
    /// 返回對象全小寫
    /// </summary>
    public class LowercasePolicy : JsonNamingPolicy
    {
        public override string ConvertName(string name) =>
            name.ToLower();
    }
}

startup.cs的ConfigureServices方法修改AddJsonOptions

 services.AddControllers(option =>
 {
     option.Filters.Add(typeof(GlobalExceptionsFilter));
 }).AddJsonOptions(options =>
 {
     // options.JsonSerializerOptions.PropertyNamingPolicy = null;//解決后端傳到前端變小寫
     //空的字段不返回
     options.JsonSerializerOptions.IgnoreNullValues = true;
     //返回json小寫
     options.JsonSerializerOptions.PropertyNamingPolicy = new LowercasePolicy();
     options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);//解決后端返回數據中文被編碼
 });

運行項目,測試接口,就全小寫了。

格式化時間

CustomJsonConvert文件夾新建DateTimeConverter和DateTimeNullableConverter

namespace WebApi.Core.Api.CustomJsonConvert
{
    public class DateTimeConverter : 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"));
        }
    }
}
namespace WebApi.Core.Api.CustomJsonConvert
{
    public class DateTimeNullableConverter : JsonConverter<DateTime?>
    {
        public override DateTime? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
        {
            return string.IsNullOrEmpty(reader.GetString()) ? default(DateTime?) : DateTime.Parse(reader.GetString());
        }

        public override void Write(Utf8JsonWriter writer, DateTime? value, JsonSerializerOptions options)
        {
            writer.WriteStringValue(value?.ToString("yyyy-MM-dd HH:mm:ss"));
        }
    }
}

AddJsonOptions添加進去

//時間格式格式化
options.JsonSerializerOptions.Converters.Add(new DateTimeConverter());
options.JsonSerializerOptions.Converters.Add(new DateTimeNullableConverter());

這樣,如果我們的實體是Datetime類型那么最后輸出的就是yyyy-MM-dd HH:mm:ss這種格式

其實這只是時間格式轉換的一種方式。還有很多方式。比如,在響應實體里面,多加一個string類型的值,利用get;將其按照時間轉換為相應的格式。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM