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 序列化之后返回的格式如我们指定的格式了~

Newtonsoft.Json 指定某个属性使用特定的时间格式的更多相关文章

  1. Json.Net 使用属性定义日期的序列化格式

    如果一个实体类里所有的时间即DateTime类型的字段,都处理成统一格式的话,可以使用如下方式: IsoDateTimeConverter timeFormat = new IsoDateTimeCo ...

  2. Jackson将对象转换为json字符串时,设置默认的时间格式

    maven需要的依赖: <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifac ...

  3. EF 实体+ Newtonsoft.Json 输出JSON 时动态忽略属性的解决方法

    最近的项目采用的是 ASP.NET mvc 4.0 + entity framework 5.0 ,后台以JSON形式抛出数据是借助于Newtonsoft.Json ,   要想忽略的属性前面添加特性 ...

  4. C# Newtonsoft.Json JObject移除属性,在序列化时忽略

    原文 C# Newtonsoft.Json JObject移除属性,在序列化时忽略 一.针对 单个 对象移除属性,序列化时忽略处理 JObject实例的 Remove() 方法,可以在 指定序列化时移 ...

  5. 分享基于.NET动态编译&Newtonsoft.Json封装实现JSON转换器(JsonConverter)原理及JSON操作技巧

    看文章标题就知道,本文的主题就是关于JSON,JSON转换器(JsonConverter)具有将C#定义的类源代码直接转换成对应的JSON字符串,以及将JSON字符串转换成对应的C#定义的类源代码,而 ...

  6. MVC日期格式化,后台使用Newtonsoft.Json序列化日期,前端使用”f”格式化日期

    MVC控制器中,经常使用Newtonsoft.Json把对象序列化成json字符串传递到前端视图.当对象中有DateTime类型的属性时,前后台如何处理才能把DateTime类型转换成想要的格式呢? ...

  7. 时间格式的时间 转json的时候变成正常的string时间20170519

    public class JsonDateValueProcessor implements JsonValueProcessor { private String format ="yyy ...

  8. Newtonsoft.Json 序列化 排除指定字段或只序列化指定字段

    using Newtonsoft.Json; using Newtonsoft.Json.Serialization; using System; using System.Collections.G ...

  9. Newtonsoft.Json动态过滤属性

    Newtonsoft.Json动态过滤属性 接口写的多了,会发现很多的问题.同一个dto,不同的action返回的字段个数不一样.往往开发人员因为懒或者各种原因一股脑的全返回,会浪费很多流量且用户体验 ...

随机推荐

  1. 大数据基础--R语言(刘鹏《大数据》课后习题答案)

    1.R语言是解释性语言还是编译性语言?   解释性语言 2.简述R语言的基本功能.   R语言是一套完整的数据处理.计算和制图软件系统,主要包括以下功能: (1)数据存储和处理功能,丰富的数据读取与存 ...

  2. ADB常用命令(一)

    转自:https://blog.csdn.net/qq_26552691/article/details/81348222 一.操作前请确认电脑上已配置好ADB环境.可在CMD命令行输入adb,如果出 ...

  3. 你必须知道的Docker数据卷(Volume)

    本篇已加入<.NET Core on K8S学习实践系列文章索引>,可以点击查看更多容器化技术相关系列文章. 一.将Docker数据挂载到容器 在Docker中,要想实现数据的持久化(所谓 ...

  4. ansible执行带有环境变量的脚本不生效

    1背景 jenkins发布时,使用ansible执行远程主机上的启动tomcat脚本发现不生效,启动tomcat的脚本中有环境变量. ansible主机为:172.16.35.8 tomcat服务器为 ...

  5. 【安富莱】V6,V5开发板用户手册,重在BSP驱动包设计方法,HAL库的框架学习,授人以渔(2019-11-04)

    说明: 1.本教程重在BSP驱动包设计方法和HAL库的框架学习,并将HAL库里面的各种弯弯绕捋顺,从而方便我们的程序设计. 2.本次工程延续以往的代码风格,从底层BSP驱动包到应用代码,变量命名,文件 ...

  6. jQuery-点击返回顶部

    在页面上,有时需要点击某个图标钮实现返回顶部的效果. 实现方式如下,给图标按钮增加名叫goTop-hook的类. // 点击返回顶部 $(window).scroll(function() { if ...

  7. ETCD:实验特性和APIs

    原文地址:Experimental features and APIs 大多数情况下,etcd项目是稳定的,但我们仍在快速发展! 我们相信快速发布理念. 我们希望获得有关仍在开发和稳定中的功能的早期反 ...

  8. Java描述设计模式(01):单例模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.单例模式 1.概念图解 单例设计模式定义:确保这个类只有一个实例,并且自动的实例化向系统提供这个对象. 2.样例代码 package co ...

  9. 哈希算法原理【Java实现】(十)

    前言 在入学时,学校为我们每位童鞋建立一个档案信息,当然每个档案信息都对应档案编号,还有比如在学校图书馆,图书馆为每本书都编了唯一的一个书籍号,那么问题来了,当我们需要通过档案号快速查到对应档案信息或 ...

  10. 【HTML】---常用标签(1)

    Html常用标签(1) 重新整理学习下前端知识从Html标签开始.我们先看HTML 骨架格式: <!DOCTYPE html> <!--这句话就是告诉我们使用哪个html版本--&g ...