Newtonsoft.json IsoDateTimeConverter 和 DateFormatHandling

2023-12-10

这不是一个问题,而是一个概念,我只是想把它说清楚。 当使用 asp.net web api 时,我们使用 Newtonsoft.Json 的序列化器设置。在这个设置中我们可以设置

jsonSetting.Converters.Add(new IsoDateTimeConverter());
jsonSetting.DateFormatHandling = DateFormatHandling.IsoDateFormat;

我明白了什么IsoDate时间转换器正在做但不清楚日期格式处理.IsoDateFormat。好像没有什么效果日期格式处理.MicrosoftDateFormat如果你还在使用IsoDate时间转换器.

仍然除了一些了解这一点的解释。


您实际上有几个不同的相关问题。让我们把它们分解一下:

当我为 Json.NET 本机支持的类型添加转换器时会发生什么?

如果你这样做,你的转换器取代原生 Json.NET 功能。例如,您可以替换其序列化byte [] fields。或者您可以更改它序列化和反序列化数字的方式:这个有点愚蠢的转换器通过加 1 来序列化整数:

public class IntConverter : JsonConverter
{ 
    public override bool CanConvert(Type objectType) { return objectType == typeof(int); }

    public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
    {
        return (int)JValue.Load(reader) - 1;
    }

    public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
    {
        writer.WriteValue(1 + (int)value);
    }
}

为什么Json.NET提供各种DateTime转换器以及对多个的本机支持DateTime格式?

文档中对此进行了解释在 JSON 中序列化日期

JSON 中的日期时间很难。

问题来自 JSON 规范本身:JSON 中没有日期的文字语法。该规范包含对象、数组、字符串、整数和浮点数,但它没有定义日期的标准。

对日期的本机支持可以处理一些常见的格式;如果您有其他格式的日期,您可以从中得出DateTimeConverterBase。 (例如,请参见如何使用 JSON.Net 转换新的日期(年、月、日)重载。)完成此操作后,您的转换器将取代由DateFormatHandling.

为什么Json.NET有一个类IsoDateTimeConverter这似乎重复了功能DateFormatHandling.IsoDateFormat?

这是一个遗留类。从在 JSON 中序列化日期

从 Json.NET 4.5 及更高版本开始,默认情况下使用 ISO 8601 格式写入日期,无需使用此转换器。

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

Newtonsoft.json IsoDateTimeConverter 和 DateFormatHandling 的相关文章

随机推荐

  • 分析 DLL/LIB 膨胀

    我在VS2005中继承了一个相当大的C 项目 它编译成大约5MB的DLL 我想缩小库的大小 以便对于从慢速网络共享使用它的客户端来说 它可以通过网络更快地加载 我知道如何通过分析代码 包含内容和项目设置来做到这一点 但我想知道是否有任何可用
  • 为什么 Directory.GetFiles() 在后续运行中运行得更快?

    我不太确定是什么原因造成的 所以如果我在搜索中找不到所需的信息 请原谅我 这是一个例子 假设我们有一个包含 1 000 000 个文件的文件夹 运行 Directory GetFiles 需要几分钟的时间 然而 之后再次运行它只需要几秒钟
  • Visual Studio 2013 编译器警告未显示

    我昨晚安装了 Visual Studio 2013 我注意到它根本没有显示任何警告 具体来说 我希望它突出显示未使用的局部变量 私有方法等 Visual Studio 中是否有需要启用的设置 我偶然遇到了解决方案 右键单击 您的项目并选择
  • 在 ActiveResource 中设置站点/用户字段

    我正在构建一个 sinatra 应用程序 它将使用 Highrise CRM gem 访问 Highrise 数据 这个 gem 基于 ActiveResource 类 我想为每个请求设置站点 用户字段 我遵循了这里发布的建议 基于每个用户
  • 如何抑制 Maven“无法找到资源”消息?

    我如何告诉 Maven 对于无法找到依赖项的存储库抑制 无法找到资源 信息消息 但显示那些它确实找到依赖项的存储库 也就是说 显示命中 但忽略未命中 因为它们淹没并掩盖了命中 例如 代替此输出 Downloading http downlo
  • 为什么了解 Asp.net 生命周期对于 Asp.net 编码很重要?

    为什么了解 Asp net 生命周期对于 Asp net 编码很重要 因为否则 您最终会对代码做出错误的假设 在不了解平台如何工作的情况下为平台进行开发绝不是一个好主意 至少 allASP Net 开发人员必须了解客户端代码 Javascr
  • android 在任何应用程序顶部显示带有弹出窗口的通知

    使用下面的代码 我的通知仅添加到通知栏 不会显示弹出式消息 就像您在另一个应用程序中收到 Whatsapp 消息一样 是什么导致通知发生这种情况 private void sendNotification int distance View
  • 一段时间后失去与 MySQL 的连接,并且没有重新连接

    我正在开发一个独立的服务器 它使用 JPA Hibernate 来访问 MySQL 数据库 当我启动服务器时 一切正常 然而 一段时间后 通常是第二天早上 如果我下午启动它 它将停止工作 因为显然与 MySQL 的连接已关闭 我看到很多So
  • 谷歌静态地图通过倾斜获得卫星视图

    在文档中没有看到任何内容 所以我想我会在这里问 对于通过谷歌静态地图 API 捕获图像 有什么方法可以获得倾斜的视图吗 似乎没有任何关于如何查询此内容的文档 Thanks 我做了一个小例子 可以帮助你 它使用 html2canvas js
  • 似乎 JavaMail 的 MimeBodyPart.setFileName 在电子邮件中插入换行符并导致文件名显示为无效

    我们有代码可以发送到一个人的邮箱并将带有附件的电子邮件复制到文件系统 用于复制消息和附件的代码对于大多数文件都可以正常工作 但长文件名会出现问题 if attachment instanceof FileAttachment attachm
  • PHP/Apache 拒绝用户访问文件夹,但不拒绝脚本访问

    所以我有这个 php Web 应用程序 并且我的文件夹之一包含一些可以下载的文件 我有一个修改标题的下载脚本 以便始终提供下载链接 例如 当您单击链接时 会弹出一个下载框 而不是显示图片 现在 如果您输入如下网址 http www mywe
  • MongoDB - 如何查询集合中的嵌套项目?

    我有一些数据看起来像这样 id ObjectId 4e2f2af16f1e7e4c2000000a advertisers created at ISODate 2011 07 26T21 02 19Z category Infinity
  • 用于休眠的 JPA @ManyToOne

    老派的休眠 ManyToOne 很懒 JPA ManyToOne 很渴望 感谢上帝 在这两个 OneToMany 中都很懒 休眠中是否有一个设置可以覆盖这个非常糟糕的设置 有太多人不断添加 ManyToOnes 而不将其设置为惰性 即他们忘
  • nunit-console 可以列出测试装置中的所有测试名称吗?

    我想在运行之前报告它们 并且可以选择通过 shell 脚本运行单独的测试 而无需管理类别 我们有一些非托管代码 可能会使进程处于不良状态 有时很乐意在每个 nunit console 运行中单独运行每个测试 现在有 explore命令行选项
  • 如何确定事件是否已被订阅

    在我的 NET 应用程序中 我订阅了另一个类的事件 认购是有条件的 当控件可见时我订阅事件 当控件不可见时取消订阅它 但是 在某些情况下 即使控件不可见 我也不想取消订阅该事件 因为我想要后台线程上发生的操作的结果 有没有办法可以确定一个类
  • 从 VB.net 2008 开始 ASP.NET MVC

    在哪里可以找到有关使用 VB net 2008 作为语言学习 ASP NET MVC 的优秀教程 我在网上搜索到的大多数深入教程都是用 C 编写的 您是否尝试过在搜索中添加 VB 一词 http www myvbprof com 2007
  • 如何安装“帽子”

    我正在尝试获取Hat调试器 当我尝试时 cabal install hat OR cabal install hat v 最后我得到 configure error in tmp terminfo 0 4 0 0 17745 terminf
  • 验证 ListBoxItem 而不是 ListBox

    我有一个 ListBox 绑定到实现 IDataErrorInfo 的对象列表 我已将 ListBox 上的 ValidatesOnDataErrors 属性设置为 True 如果我选择无效的项目 列表框周围会出现红色边框 如何修改 Ite
  • 如何使用 .po 文件翻译帖子或页面的 WordPress 内容 [关闭]

    Closed 这个问题需要调试细节 目前不接受答案 对于 Wordpress WooCommerce 我想找到一个插件来翻译帖子 页面 自定义帖子类型的内容 例如基于 po 文件 而不是 WPML 因为很多段落需要重用它 我可以用什么来达到
  • Newtonsoft.json IsoDateTimeConverter 和 DateFormatHandling

    这不是一个问题 而是一个概念 我只是想把它说清楚 当使用 asp net web api 时 我们使用 Newtonsoft Json 的序列化器设置 在这个设置中我们可以设置 jsonSetting Converters Add new