使用DataContractJsonSerializer自定义DateTime序列化/反序列化

如何使用DataContractJsonSerializer将默认的JSON DateTime序列化/反序列化更改为自定义格式,以用于对象图中的所有DateTime属性?

Json.Net库处理这个,但我不能在这个项目中使用它。

我尝试过IDataContractSurrogate但我无法访问DateTimes的值 – >字符串转换。

模型和预期的JSON是:

 [DataContract] public class Client { [DataMember(Name = "id")] public int Id {get; set; } [DataMember(Name = "name")] public string Name {get; set; } [DataMember(Name = "contacts")] public IList Contacts {get; set; } [DataMember(Name = "created")] public DateTime Created {get; set; } [DataMember(Name = "changed")] public DateTime Changed {get; set; } } [DataContract] public class Contact { [DataMember(Name = "name")] public string Name {get; set; } [DataMember(Name = "created")] public DateTime Created {get; set; } } 

 { "id": 123, "name": "Client Name", "contacts": [ { "name": "Contact Name", "created": "2014-01-25 02:12:43" } ], "created": "2014-01-25 01:11:23" "changed": "2014-01-25 03:22:41" } 

我可能会遗漏一些东西,但在创建序列化程序时尝试在设置中传递所需的日期和时间格式:

 var serializer = new DataContractJsonSerializer( typeof(Client), new DataContractJsonSerializerSettings { DateTimeFormat = new DateTimeFormat("yyyy-MM-dd hh:mm:ss"), });