强制 JSON.NET 在序列化 DateTime 时包含毫秒(即使 ms 分量为零)

2023-11-23

我使用 JSON.NET 直接从对象实例序列化 DateTime 值(不使用带有格式化程序的 DateTime.ToString() )。

有没有办法强制 JSON.NET 在序列化中包含毫秒,即使 DateTime 的毫秒部分为零?

背景:我的这个 JSON 端点的 Web 服务使用者非常慢。条件逻辑对于消费者来说是昂贵的,所以我想每次都提供相同的数据格式。


我们在当前的项目中遇到了同样的问题。我们使用 Web API(以及 JSON.Net)来实现 REST API。我们发现,在序列化时DateTime对于对象,JSON.Net 会忽略毫秒中的尾随零,或者如果日期为零,则完全忽略日期中的毫秒。我们的客户期望一个固定长度的日期时间字符串,其中精确的 3 位数字表示毫秒。我们通过执行以下操作来修复它Application_Start():

JsonSerializerSettings settings = HttpConfiguration.Formatters.JsonFormatter.SerializerSettings;
IsoDateTimeConverter dateConverter = new IsoDateTimeConverter 
{ 
    DateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.fff'Z'" 
};
settings.Converters.Add(dateConverter);

如果您不使用 Web API,您可以通过创建一个新实例来执行相同的操作JsonSerializerSettings,添加IsoDateTimeConverter如上所示,然后将序列化器设置传递给JsonConvert.SerializeObject().

注意:如果您要序列化DateTimeOffset或本地人DateTime并且您想要包含时区偏移量,请替换引用的'Z'在上面的格式中,不带引号K. See 自定义日期和时间格式字符串在文档中了解更多信息。

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

强制 JSON.NET 在序列化 DateTime 时包含毫秒(即使 ms 分量为零) 的相关文章

随机推荐

  • jquery 下拉选择器 AutoPostback

    在 jQuery 中 有什么方法可以区分回发下拉列表和非回发下拉列表 ASP NET 3 5 select change function e something like this if this attr AutoPostback tr
  • dyld:库未加载:新 Xcode 的 @rpath/libswiftCore.dylib 问题(10.2)

    引用的答案都不起作用 Xcode 10 2 发生了一些新变化 无论我使用 Swift 4 2 还是 5 都会发生这种情况 使用全新的 未经编辑的命令行工具 它会立即发生 您需要做的就是创建一个 MacOS 命令行工具 然后点击 运行 您会立
  • .slice 和 .wrapall

    我正在使用 stackoverflow 上的一位成员建议的一些代码 并由我进行修改 将每 3 个列表项包装为大型菜单的一部分 代码是 var lis ul gt li for var i 0 i lt ls length i 3 lis s
  • 加载此程序集将产生与其他实例不同的授权集

    从 ASP net 2 0 网站调用 vb net 1 1 程序集时 我在运行时收到以下错误 加载此程序集将产生与其他实例不同的授权集 知道这个错误背后的原因是什么吗 场景是 有一个 Web 应用程序是在 ASP NET 2 0 中构建为
  • 启用 Proguard 后应用程序崩溃

    我的应用程序在没有启用混淆器的情况下运行得很好 但是当我启用它时 应用程序立即崩溃 我在配置中尝试了多种组合 但均无济于事 有什么我应该保留而遗失的东西吗 混淆器配置 https gist github com hanleyhansen 9
  • 登录后重定向到特定 URL

    Devise 1 0 Rails 2 3 的库 中是否有一种方法可以在登录后重定向到特定 URL 而不是 root url 编辑 忘了提及它是 Devise 1 0 您的用户可能之前已被重定向after sign in path叫做 如果用
  • 是否有一个工具可以根据当前工作目录使用 SHA 创建存储库清单文件?

    我正在使用 Android 项目使用的 repo 来管理我的项目 是否有一个工具可以根据当前工作目录使用 SHA 创建存储库清单文件 如下所示
  • TfIdfVectorizer:固定词汇的向量化器如何处理新单词?

    我正在研究约 10 万篇研究论文的语料库 我正在考虑三个领域 纯文本 title abstract 我使用 TfIdfVectorizer 获取明文字段的 TfIdf 表示 并将由此产生的词汇反馈回标题和摘要的矢量化器中 以确保所有三种表示
  • 如何在 JavaScript 中使用 Math.random 进行测试?

    我有一个函数可以在最小值和最大值之间选择一个随机值 因此 当我进行测试时 我会测试该值是否落在最小值和最大值之间 但由于我的应用程序出现一些故障 测试有时会通过 有时由于随机性而失败 覆盖 模拟是个好主意吗Math random 返回 0
  • 如何在没有 Box 授权页面的情况下获取访问令牌

    我已被授予访问 协作 文件夹的权限 我需要的是每天访问该文件夹并从中获取文件 现在我生成的开发者令牌将在 1 小时后过期 有什么方法可以让我得到authorization code没有第一条腿 这需要用户界面 这样我就可以在每次获取文件时刷
  • CUDA 联合访问全局内存

    我已经阅读了 CUDA 编程指南 但我错过了一件事 假设我在全局内存中有 32 位 int 数组 我想通过合并访问将其复制到共享内存 全局数组的索引从 0 到 1024 假设我有 4 个块 每个块有 256 个线程 shared int s
  • jquery mouseover和mouseout一直闪烁

    我在使用 jQuery MouseOut 和 MouseOver 时遇到一些问题 每次我将鼠标悬停在选定的 div 上时 就会出现需要显示的子 div 但是 它开始闪烁 我不知道为什么 我已将代码发布在 JsFiddle 上 http js
  • C++ 中的静态 const double

    这是使用 static const 变量的正确方法吗 在我的顶级课程中 形状 ifndef SHAPE H define SHAPE H class Shape public static const double pi private d
  • StackNavigator 通过 Component 给出未定义的错误

    我试图使用 StackNavigator 进行导航 当我使用它从一个屏幕转到另一个屏幕时它会起作用 如所解释的那样here 但是 当我尝试让子组件自行导航时 导航似乎不起作用 并且我找不到任何解决方案 正如下面的代码所示 我尝试使用测试组件
  • 从两个不同位置安装 ClickOnce 应用程序

    我有一个在 NET Framework 3 5 Service pack 1 中使用 C 开发的 Windows 窗体应用程序 该应用程序可以基于开发数据库以及生产数据库进行发布 我正在使用 MSBuild 社区任务来发布我的应用程序 将应
  • .NET Winforms 应用程序是否有自动升级的标准方法?

    如果您有一个安装在大量机器上的Winforms应用程序 是否有实现自动升级功能的标准方法 例如每次启动时 它都会检查网站或网络服务 如果有可用的新版本 它就会下载并安装它 我可以弄清楚如何推出我自己的版本 但我想知道是否已经有任何框架可以帮
  • Android - 如何从微调器中获取所选项目值并将其放入字符串中?

    我在这个帖子上读到了很多类似的问题 但没有一个对我有帮助 这是我的代码 Override protected void onCreate Bundle savedInstanceState super onCreate savedInsta
  • 使用 R 中的 dplyr 查找一列字符串位于另一列中的行

    希望拉回其中一列中的值作为字符串存在于另一列 同一行内 中的行 我有一个 df A lt c cat dog boy B lt c cat in the cradle meet the parents boy mmets world df
  • 如何投影字段是否存在

    如果我有类似结构的文档如下 我正在用计算结果更新它们 我想知道结果是否已经插入到文档中 假设我对每个文档运行计算 c 和计算 d 现在我想显示所有文档的表格并显示计算 d 是否已经执行 对于这个表 我不关心计算 c id 1 a 1 res
  • 强制 JSON.NET 在序列化 DateTime 时包含毫秒(即使 ms 分量为零)

    我使用 JSON NET 直接从对象实例序列化 DateTime 值 不使用带有格式化程序的 DateTime ToString 有没有办法强制 JSON NET 在序列化中包含毫秒 即使 DateTime 的毫秒部分为零 背景 我的这个