【问题标题】:Custom DateTime serialization/deserialization using DataContractJsonSerializer使用 DataContractJsonSerializer 自定义 DateTime 序列化/反序列化
【发布时间】:2015-02-26 16:53:44
【问题描述】:

对于对象图中的所有DateTime 属性,如何使用DataContractJsonSerializer 将默认JSON 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<Contact> 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"
}

【问题讨论】:

    标签: c# json serialization deserialization


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2019-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多