`newtonsoft.json` 指定某個屬性使用特定的時間格式

来源:https://www.cnblogs.com/weihanli/archive/2019/06/25/11080531.html
-Advertisement-
Play Games

指定某個屬性使用特定的時間格式 Intro 是 .NET 下最受歡迎 JSON 操作庫,原為 後改名為 ,之前一直推薦大家使用,除了性能好之外,主要是功能豐富,基本滿足所有的可能用到的場景(不區分小寫,現在還不行,,)。 遇到這樣一個需求,全局使用一種時間格式,某些屬性使用特殊的時間格式,這裡以一個 ...


Newtonsoft.Json 指定某個屬性使用特定的時間格式

Intro

Newtonsoft.Json 是 .NET 下最受歡迎 JSON 操作庫,原為 JSON.Net 後改名為 Newtonsoft.Json,之前一直推薦大家使用,除了性能好之外,主要是功能豐富,基本滿足所有的可能用到的場景(不區分小寫,現在還不行,,)。

遇到這樣一個需求,全局使用一種時間格式,某些屬性使用特殊的時間格式,這裡以一個日期為例

Solution

解決辦法:自定義一個 Converter,針對某一個屬性使用,DateTimeFormatConverter源碼:

using Newtonsoft.Json.Converters;

namespace WeihanLi.Common.Json
{
  public class DateTimeFormatConverter : IsoDateTimeConverter
  {
    public DateTimeFormatConverter(string format)
    {
      DateTimeFormat = format;
    }
  }
}

在需要設置格式的屬性上設置 Converter https://github.com/WeihanLi/ActivityReservation/blob/dev/ActivityReservation.Helper/ViewModels/ReservationViewModel.cs#L8

[Display(Name = "預約日期")]
[JsonConverter(typeof(DateTimeFormatConverter), "yyyy-MM-dd")]
public DateTime ReservationForDate { get; set; }

請求 api 地址 https://reservation.weihanli.xyz/api/Reservation?pageNumber=1&pageSize=5,返回的數據如下所示:

{
    "Data": [
        {
            "ReservationForDate": "2019-06-10",
            "ReservationForTime": "08:00~09:50",
            "ReservationPersonPhone": "123****0112",
            "ReservationPersonName": "兒**",
            "ReservationUnit": "51",
            "ReservationPlaceName": "多媒體工作室",
            "ReservationActivityContent": "62",
            "ReservationId": "f7ab9128-0977-4fd8-9b1a-92648228b397",
            "ReservationTime": "2019-06-09 05:19:11",
            "ReservationStatus": 1
        },
        {
            "ReservationForDate": "2019-06-12",
            "ReservationForTime": "10:00-12:00",
            "ReservationPersonPhone": "133****3541",
            "ReservationPersonName": "試**",
            "ReservationUnit": "ss",
            "ReservationPlaceName": "多媒體工作室",
            "ReservationActivityContent": "ss",
            "ReservationId": "6c145aea-dc14-4ed9-a47f-48c0b79f7601",
            "ReservationTime": "2019-06-11 12:45:14",
            "ReservationStatus": 0
        },
        {
            "ReservationForDate": "2019-06-17",
            "ReservationForTime": "14:00-16:00",
            "ReservationPersonPhone": "138****3883",
            "ReservationPersonName": "大**",
            "ReservationUnit": "1",
            "ReservationPlaceName": "多媒體工作室",
            "ReservationActivityContent": "1",
            "ReservationId": "cebea7bf-44b1-4565-8cdd-78b6156c5f4d",
            "ReservationTime": "2019-06-10 02:52:18",
            "ReservationStatus": 1
        },
        {
            "ReservationForDate": "2019-06-17",
            "ReservationForTime": "08:00-10:00",
            "ReservationPersonPhone": "132****4545",
            "ReservationPersonName": "冷**",
            "ReservationUnit": "技術部",
            "ReservationPlaceName": "多媒體工作室",
            "ReservationActivityContent": "技術部培訓",
            "ReservationId": "07f6f8fd-f232-478e-9a94-de0f5fa9b4e9",
            "ReservationTime": "2019-06-10 01:44:52",
            "ReservationStatus": 2
        },
        {
            "ReservationForDate": "2019-06-22",
            "ReservationForTime": "10:00~11:50",
            "ReservationPersonPhone": "132****3333",
            "ReservationPersonName": "測**",
            "ReservationUnit": "測試",
            "ReservationPlaceName": "多媒體工作室",
            "ReservationActivityContent": "測試",
            "ReservationId": "27d0fb7a-ce14-4958-8636-dd10e5526083",
            "ReservationTime": "2019-06-18 10:57:06",
            "ReservationStatus": 1
        }
    ],
    "PageNumber": 1,
    "PageSize": 5,
    "TotalCount": 18,
    "PageCount": 4,
    "Count": 5
}

可以看到 ReservationForDate 序列化之後返回的格式如我們指定的格式了~


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前面介紹了怎樣通過Socket在客戶端與服務端之間傳輸文本,當然Socket也支持在客戶端與服務端之間傳輸文件,因為文件本身就是通過I/O流實現讀寫操作的,所以在套接字的輸入輸出流中傳輸文件真是再合適不過了。只是套接字屬於長連接,倘若Socket一直不關閉,連接將總是處於就緒狀態,也就無法判斷文件數 ...
  • 封裝和@property 一、複習 1、介面類和抽象類 python中沒有介面類,有抽象類,abc模塊中的metaclass=ABCMeta,@abstructmethod,本質是做代碼規範用的,希望在子類中實現和父類方法名完全一樣的方法 在Java的角度上是有區別的: Java本來支持單繼承,所以 ...
  • 一、模板常用語法 1.1 變數 1. 符號:{{ }} 表示變數,在模板渲染的時候替換成值 使用方式:{{ 變數名 }}:變數名由字母數字和下劃線組成 點(.)在模板語言中有特殊的含義,用來獲取對象的相應屬性值 註意:當模板系統遇到一個(.)時,會按照如下的順序去查詢: 在字典中查詢 屬性或者方法 ...
  • 6.9 time 模塊 1、時間戳(以秒計算) 2、格式化的字元串 3、struct_time()對象 4、 mktime( t ) : 將一個struct_time轉化為時間戳 5、time.strptime() 6、time.asctime() 7、time.ctime() 6.10 datet ...
  • 一、希爾排序的介紹 希爾排序(Shell Sort)是插入排序的一種。也稱縮小增量排序,是直接插入排序演算法的一種更高效的改進版本。希爾排序是非穩定排序演算法。 希爾排序是把記錄按下標的一定增量分組,對每組使用直接插入排序演算法排序;隨著增量逐漸減少,每組包含的記錄越來越多,當增量減至1時,整個文件恰被分 ...
  • 本篇內容說說Spring對切麵的支持,如何把普通類聲明為一個切麵,以及如何使用註解創建切麵,主要有以下幾點內容: 什麼是面向切麵編程 選擇連接點 使用註解創建切麵 在XML中聲明切麵 ...
  • 緩存要解決的問題是速度的問題,使用緩存的目的是為了減少對物理資源的訪問,緩存大量的應用在軟硬體的方方面面 ...
  • 1.面試要看資料下菜,人家不會的不要問 2.要調整自己做為面試官的心態,不是讓你去打敗面試者 3.要看薪酬調整面試提問的難易程度。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...