newtonsoft json序列化时间跨度格式

2023-11-22

是否可以指定自定义格式TimeSpan序列化? 使用Newtonsoft.Json.

我想要格式为 HH:mm 的序列化字符串,例如:

TimeSpan.FromHours(5)-> //“+05:00”

TimeSpan.FromHours(-5)-> //“-05:00”

Thanks!


这是一个可以添加到项目中的 TimeSpan 转换器:

using System;
using Newtonsoft.Json;

namespace JsonTools
{
    /// <summary>
    /// TimeSpans are not serialized consistently depending on what properties are present. So this 
    /// serializer will ensure the format is maintained no matter what.
    /// </summary>
    public class TimespanConverter : JsonConverter<TimeSpan>
    {
        /// <summary>
        /// Format: Days.Hours:Minutes:Seconds:Milliseconds
        /// </summary>
        public const string TimeSpanFormatString = @"d\.hh\:mm\:ss\:FFF";

        public override void WriteJson(JsonWriter writer, TimeSpan value, JsonSerializer serializer)
        {
            var timespanFormatted = $"{value.ToString(TimeSpanFormatString)}";
            writer.WriteValue(timespanFormatted);
        }

        public override TimeSpan ReadJson(JsonReader reader, Type objectType, TimeSpan existingValue, bool hasExistingValue, JsonSerializer serializer)
        {
            TimeSpan parsedTimeSpan;
            TimeSpan.TryParseExact((string)reader.Value, TimeSpanFormatString, null, out parsedTimeSpan);
            return parsedTimeSpan;
        }
    }
}

它可以这样使用:

public class Schedule
{
    [JsonConverter(typeof(TimespanConverter))]
    [JsonProperty(TypeNameHandling = TypeNameHandling.All)]
    public TimeSpan Delay { get; set; }
}

Notes:

  1. TimeSpan 序列化格式参考

  2. 我发现在使用 Newtonsoft 生成架构时,我必须包含 TypeNameHandling 属性,否则 TimeSpan 类型名称未在生成的架构中正确序列化。这对于此处的目的来说不是必需的,但无论如何我都将其包括在内。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

newtonsoft json序列化时间跨度格式 的相关文章

  • 创建 DirectoryEntry 实例以供测试使用

    我正在尝试创建 DirectoryEntry 的实例 以便可以使用它来测试将传递 DirectoryEntry 的一些代码 然而 尽管进行了很多尝试 我还是找不到实例化 DE 并初始化它的 PropertyCollection 的方法 我有
  • 属性对象什么时候创建?

    由于属性实际上只是附加到程序集的元数据 这是否意味着属性对象仅根据请求创建 例如当您调用 GetCustomAttributes 时 或者它们是在创建对象时创建的 或者 前两个的组合 在由于 CLR 的属性扫描而创建对象时创建 从 CLR
  • 自动从 C# 代码进行调试过程并读取寄存器值

    我正在寻找一种方法来读取某个地址的 edx 注册表 就像这个问题中所问的那样 读取eax寄存器 https stackoverflow com questions 16490906 read eax register 虽然我的解决方案需要用
  • Signalr 在生产服务器中总是陷入长轮询

    当我在服务器中托管应用程序时 它会检查服务器端事件并始终回退到长轮询 服务器托管环境为Windows Server 2012 R1和IIS 7 5 无论如何 我们是否可以解决这个问题 https cloud githubuserconten
  • FFMPEG Seeking 带来音频伪影

    我正在使用 ffmpeg 实现音频解码器 在读取音频甚至搜索已经可以工作时 我无法找到一种在搜索后清除缓冲区的方法 因此当应用程序在搜索后立即开始读取音频时 我没有任何工件 avcodec flush buffers似乎对内部缓冲区没有任何
  • Cygwin 下使用 CMake 编译库

    我一直在尝试使用 CMake 来编译 TinyXML 作为一种迷你项目 尝试学习 CMake 作为补充 我试图将其编译成动态库并自行安装 以便它可以工作 到目前为止 我已经设法编译和安装它 但它编译成 dll 和 dll a 让它工作的唯一
  • C# 中可空类型是什么?

    当我们必须使用nullable输入 C net 任何人都可以举例说明 可空类型 何时使用可空类型 https web archive org web http broadcast oreilly com 2010 11 understand
  • 使用 Google Analytics API 在 C# 中显示信息

    我一整天都在寻找一个好的解决方案 但谷歌发展得太快了 我找不到有效的解决方案 我想做的是 我有一个 Web 应用程序 它有一个管理部分 用户需要登录才能查看信息 在本节中 我想显示来自 GA 的一些数据 例如某些特定网址的综合浏览量 因为我
  • c# Asp.NET MVC 使用FileStreamResult下载excel文件

    我需要构建一个方法 它将接收模型 从中构建excel 构建和接收部分完成没有问题 然后使用内存流导出 让用户下载它 不将其保存在服务器上 我是 ASP NET 和 MVC 的新手 所以我找到了指南并将其构建为教程项目 public File
  • HttpClient 像浏览器一样请求

    当我通过 HttpClient 类调用网站 www livescore com 时 我总是收到错误 500 可能服务器阻止了来自 HttpClient 的请求 1 还有其他方法可以从网页获取html吗 2 如何设置标题来获取html内容 当
  • .Net Core / 控制台应用程序 / 配置 / XML

    我第一次尝试使用新的 ConfigurationBuilder 和选项模式进入 Net Core 库 这里有很多很好的例子 https docs asp net en latest fundamentals configuration ht
  • 使用向量的 merge_sort 在少于 9 个输入的情况下效果很好

    不知何故 我使用向量实现了合并排序 问题是 它可以在少于 9 个输入的情况下正常工作 但在有 9 个或更多输入的情况下 它会执行一些我不明白的操作 如下所示 Input 5 4 3 2 1 6 5 4 3 2 1 9 8 7 6 5 4 3
  • 线程、进程和 Application.Exit()

    我的应用程序由主消息循环 GUI 和线程 Task Factory 组成 在线程中我调用一些第三方应用程序var p new Process 但是当我调用Application Exit 在消息循环中 我可以看到在线程中启动的进程仍在内存中
  • 是否有比 lex/flex 更好(更现代)的工具来生成 C++ 分词器?

    我最近将源文件解析添加到现有工具中 该工具从复杂的命令行参数生成输出文件 命令行参数变得如此复杂 以至于我们开始允许它们作为一个文件提供 该文件被解析为一个非常大的命令行 但语法仍然很尴尬 因此我添加了使用更合理的语法解析源文件的功能 我使
  • 像“1$”这样的位置参数如何与 printf() 一起使用?

    By man I find printf d width num and printf 2 1 d width num 是等价的 但在我看来 第二种风格应该与以下相同 printf d num width 然而通过测试似乎man是对的 为什
  • 检查 url 是否指向文件或页面

    我们需要以下内容 如果文件确实是文件 则从 URL 下载该文件 否则 如果它是一个页面 则什么也不做 举个简单的例子 我有以下命令来下载文件 My Computer Network DownloadFile http www wired c
  • 作为字符串的动态属性名称

    使用 DocumentDB 创建新文档时 我想设置属性名称动态地 目前我设置SomeProperty 像这样 await client CreateDocumentAsync dbs db colls x new SomeProperty
  • ListDictionary 类是否有通用替代方案?

    我正在查看一些示例代码 其中他们使用了ListDictionary对象来存储少量数据 大约 5 10 个对象左右 但这个数字可能会随着时间的推移而改变 我使用此类的唯一问题是 与我所做的其他所有事情不同 它不是通用的 这意味着 如果我在这里
  • 如何在 C# 中播放在线资源中的 .mp3 文件?

    我的问题与此非常相似question https stackoverflow com questions 7556672 mp3 play from stream on c sharp 我有音乐网址 网址如http site com aud
  • 将变量分配给另一个变量,并将一个变量的更改反映到另一个变量中

    是否可以将一个变量分配给另一个变量 并且当您更改第二个变量时 更改会瀑布式下降到第一个变量 像这样 int a 0 int b a b 1 现在 b 和 a 都 1 我问这个问题的原因是因为我有 4 个要跟踪的对象 并且我使用名为 curr

随机推荐

  • FormData.append("key", "value") 不起作用

    你能告诉我这有什么问题吗 var formdata new FormData formdata append key value console log formdata 我的输出看起来像这样 我找不到我的 键 值 对 FormData p
  • 检查指针是否分配了内存

    在 C 中 我们可以检查传递给函数的指针是否分配了内存吗 我用 C 语言编写了自己的函数 它接受字符指针 buf 指向缓冲区的指针 和大小 buf siz 缓冲区大小 实际上 在调用此函数之前 用户必须创建一个缓冲区并为其分配 buf si
  • 有谁知道 IOS 6.0 中不推荐使用哪些方法?

    有谁知道有多少种方法已弃用的 IOS 6 0 例如 1 shouldAutorotateToInterfaceOrientation iOS 6 0 中已弃用 而是使用 shouldAutorotate 2 dismissModalView
  • 如何在 Shiny 中使用自己的一组小部件创建多个页面

    我希望能够创建多个页面 每个页面都有一组小部件下拉列表 单选按钮和一个用于绘制地图的空间 Shiny 教程展示了如何创建多个页面 shinyUI navbarPage My Application tabPanel Component 1
  • 多线程单读单写fifo队列

    我需要一个队列来将消息从一个线程 A 传递到另一个线程 B 但是我无法找到真正执行我想要的操作的队列 因为它们通常允许添加项目失败 在我的情况下就是这种情况这几乎是致命的 因为消息需要处理 并且线程确实无法停止并等待空闲空间 只有线程 A
  • 自签名证书可以在 Apache 反向代理后面工作吗?

    我们希望使用 Apache 作为一组应用程序服务器的反向代理 我们计划在 Apache 实例上使用 CA 签名的 SSL 证书 但希望在应用程序服务器实例上使用自签名证书 以便 Apache 到应用程序服务器的连接也被加密 如果不需要 我们
  • 重写方法中的变量名称不正确

    当我让 Android Studio 生成覆盖方法时 它将生成具有奇怪参数名称的方法 例如根据文档 onCheckedChanged 应该如下所示 public void onCheckedChanged CompoundButton bu
  • ruby中各种变量作用域的区别

    Ruby 有 5 个变量作用域 局部变量 这些是正常变量 例如x 25 y gaurish where x and y是局部变量 实例变量 这些用 实际变量名前面的符号 主要与类一起使用 以便类的每个实例 对象都有不同 单独的值 例子 em
  • 使用 C# 中的 StackExchange / Sentinel 进行 Redis 故障转移

    我们目前正在使用 Redis 2 8 4 和 StackExchange Redis 并且很喜欢它 但目前没有任何针对硬件故障等的保护 我正在尝试让解决方案起作用 我们有主 从和哨兵监控 但无法完全到达那里 并且在搜索后我无法找到任何真正的
  • 如何在 SQL Server 中建立多对多关系模型?

    我需要在 SQL Server 数据库中引入两个表之间的多对多关系 这两个表都有一个整数作为主键 在 T SQL 中如何最好地完成此操作 考虑以下两个示例表定义 其中应该存在多对多关系 CREATE TABLE dbo Authors Id
  • 使用Intellij + Maven导入库:无法解析符号

    我已经在 IntelliJ 13 中使用 Maven 导入了一个库 JBox2D 以便在 android 项目中使用 Maven 没有给我任何错误消息 所以我假设库已正确导入 但是 一旦我尝试使用库中的类 我就会收到 无法解析符号 Inte
  • Spring Security默认登录页面代码位于哪里?

    默认登录页面在哪里生成春季安全4当你使用最简单的配置时
  • Python,成对“距离”,需要一种快速的方法来做到这一点

    在我的博士期间的一个业余项目中 我从事了用 Python 建模某些系统的任务 就效率而言 我的程序在以下问题中遇到了瓶颈 我将在最小工作示例中公开该问题 我处理大量由 3D 起点和终点编码的段 因此每个段由 6 个标量表示 我需要计算成对最
  • 将 TensorFlow 损失全局目标 (recall_at_ precision_loss) 与 Keras(而非指标)结合使用

    背景 我有一个有 5 个标签的多标签分类问题 例如 1 0 1 1 0 因此 我希望我的模型能够改进固定召回率 精确召回率 AUC 或 ROC AUC 等指标 使用损失函数没有意义 例如binary crossentropy 这与我想要优化
  • Sass/Compass 从变量中获取变量名

    我正在尝试制作一个 mixin 它可以让我根据您使用的变量名称创建适应的代码块 foo 00A9EC mixin menu color color color color a level2 color color a level2 visi
  • WPF TextFormatter 中第二行的缩进

    我正在使用 TextFormatter 制作 WPF 文本编辑器 我需要缩进每个段落中的第二行 第二行的缩进宽度应该与第一行第一个单词的宽度相同 包括第一个单词后面的空白 像这样的东西 Indent of second line in In
  • 从 Flutter 打开 Android Activity 和 iOS ViewController

    我有一个 Flutter 项目 需要一些需要在本机 Android Activity 或 iOS ViewController 中实现的某些功能 有没有办法导航到 android Activity 并向其传递数据 并在 Flutter 中从
  • 带有 MediaCodec Surface 的 AVC 硬件编码器可靠性如何?

    我正在开发一个 Android 应用程序 该应用程序使用 MediaCodec 使用 Surface 方法对 H 264 视频进行编码 我的目标是 Android 5 0 并且遵循了 bigflake com 中的所有示例和样本 我两年前开
  • MATLAB 中的矩阵乘法时间复杂度

    有谁知道MATLAB使用哪种算法进行矩阵乘法以及它的时间复杂度是多少 为了完整起见 如中所述这个线程 Matlab 使用DGEMM 双通用矩阵乘法 例程来自BLAS 基本线性代数子程序 请注意 BLAS 不存在单一的实现 它针对特定的处理器
  • newtonsoft json序列化时间跨度格式

    是否可以指定自定义格式TimeSpan序列化 使用Newtonsoft Json 我想要格式为 HH mm 的序列化字符串 例如 TimeSpan FromHours 5 gt 05 00 TimeSpan FromHours 5 gt 0