使用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"), });