如何强制netwtonsoft json序列化程序将datetime属性序列化为字符串?

vak*_*kas 40 asp.net json.net c#-4.0

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

..."CreatedOn":"\/Date(1317303882420+0500)\/",...
Run Code Online (Sandbox Code Playgroud)

我希望它在简单的字符串中

..."createdOn": "2011-05-05 14:03:07", ...
Run Code Online (Sandbox Code Playgroud)

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

  [JsonProperty("id")]
        public int ProductID { get; set; }
Run Code Online (Sandbox Code Playgroud)

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

Jam*_*and 64

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

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

参考答案: 从Newtonsoft的JSON Serializer中解析JSON DateTime

这里还有关于Json.NET和日期的文档: 在JSON中序列化日期

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

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

  • 好.刚想出来:WebApiConfig.Register方法,添加了这一行:GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.DateFormatString ="dd/MM/yyyy" (7认同)
  • 有没有办法装饰我的MVC模型类属性,以便Newtonsoft.Json将使用首选的DateTime格式?或者可以在全局级别指定转换器,以便我的整个WebApi稳定控制器使用所需的日期格式序列化所有具有Date属性的模型? (5认同)
  • 响应的thanx ...这很酷很有效..但事实上我需要日期时间为"LogDate":"2009-02-15 00:00:00"日期和时间之间没有T (2认同)
  • 该格式的第一部分应该是yyyy-MM-dd (2认同)
  • 是的它应该是HH,因为没有tt表示AM或PM.我尝试编辑修复它,但有一条BS规则只接受六个字符或更多字符的编辑,所以我没有浪费时间去考虑再编辑4个字符. (2认同)