2013-02-01 43 views
4

有沒有辦法改變DataContractJsonSerializer序列化日期的方式?DataContractJsonSerializer日期序列化

目前,它會日期轉換爲類似:

{ 「日期」: 「/日期(1260597600000-0600)/」 }

我想把它轉換成可讀日期格式。

我正在使用openrasta框架構建RestApi。我可以編寫OperationInterceptors,它將在序列化/反序列化之前的某個階段將JSON日期時間格式轉換爲人類可讀的格式,或者有任何其他方式可以執行此操作?

回答

0

最後我已經處理了這個問題,如下(C#)

[DataMember] 
    public string Date { get; set; } 

    [IgnoreDataMember] 
    public DateTime? DateForInternalUse { get; set; } 

    [OnSerializing] 
    public void OnSerializing(StreamingContext context) 
    { 
     Date = (DateForInternalUse != null) ? ((DateTime)DateForInternalUse).ToString(DateTimeFormatForSerialization) : null; 
    } 

    [OnDeserialized] 
    public void OnDeserialized(StreamingContext context) 
    { 
     try 
     { 
     DateForInternalUse = !String.IsNullOrEmpty(Date) ? DateTime.ParseExact(Date, DateTimeFormats, null, DateTimeStyles.None) : (DateTime?)null; 
     } 
     catch (FormatException) 
     { 
     DateForInternalUse = null; 
     } 
    } 

在這種情況下,我們可以指定我們要支持,我一直保持裏面的web.config

<add key="DateTimePattern" value="yyyy-MM-dd,yyyy-MM-dd hh:mm:ss zzz,yyyy-MM-dd hh:mm:ss" /> 

格式讓我知道進一步的澄清。

1

使用DataContractJsonSerializer構造函數來傳遞您的序列設置:

var s = new DataContractJsonSerializer(
      typeof(YourTypeToSerialize), 
      new DataContractJsonSerializerSettings 
      { 
       DateTimeFormat = new DateTimeFormat("yyyy-MM-dd'T'HH:mm:ss") 
      } 
     ); 
相關問題