【问题标题】:how to force netwtonsoft json serializer to serialize datetime property to string?如何强制 netwtonsoft json 序列化程序将 datetime 属性序列化为字符串?
【发布时间】:2011-12-02 00:10:16
【问题描述】:

我正在使用 Newtonsoft 的 Json 当我序列化一个日期时间属性时,我得到的 json 响应为:

..."CreatedOn":"\/Date(1317303882420+0500)\/",...

我希望它是简单的字符串

..."createdOn": "2011-05-05 14:03:07", ...

虽然我的类属性是 DateTime,但如何强制将其序列化为字符串,因为我们可以添加属性以将属性名称更改为

  [JsonProperty("id")]
        public int ProductID { get; set; }

是否有类似的方法可以强制 DateTime 属性序列化为字符串??

【问题讨论】:

标签: asp.net c#-4.0 json.net


【解决方案1】:

从 James Newton-King 在 StackOverflow 上发表的帖子看来,您可以做到这一点。

string isoJson = JsonConvert.SerializeObject(this, new IsoDateTimeConverter());
// {"Details":"Application started.","LogDate":"2009-02-15T00:00:00Z"}    

参考答案: Parsing JSON DateTime from Newtonsoft's JSON Serializer

这里还有关于 Json.NET 的文档和日期: Serializing Dates in JSON

以下是使用DateTimeFormat 属性自定义输出的示例:

return JsonConvert.SerializeObject(this, Formatting.None, new IsoDateTimeConverter() { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" });

【讨论】:

  • 感谢回复...这很酷,它可以工作..但事实上我需要日期时间为“LogDate”:“2009-02-15 00:00:00”而不是 T在日期和时间之间
  • 查看文章最后一个链接中的文档。它说:“IsoDateTimeConverter 类有一个属性 DateTimeFormat,可以进一步自定义格式化字符串。”试着摆弄它。
  • 有没有办法装饰我的 MVC 模型类属性,以便 Newtonsoft.Json 将使用首选的 DateTime 格式?或者可以在全局级别指定转换器,以便我的整个 WebApi 稳定控制器使用所需的日期格式序列化具有 Date 属性的所有模型?
  • 好的。刚刚想通了:WebApiConfig.Register 方法,添加了这一行: GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.DateFormatString = "dd/MM/yyyy"
  • 是的,它应该是 HH,因为没有 tt 来表示 AM 或 PM。我尝试进行编辑以修复它,但有一条 BS 规则,即只接受六个或更多字符的编辑,因此我没有浪费时间尝试考虑再编辑 4 个字符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-09
  • 1970-01-01
  • 2016-01-16
  • 1970-01-01
  • 2018-09-03
  • 1970-01-01
  • 2012-08-19
相关资源
最近更新 更多