2014-01-11 55 views
1

我創建了一個C#類與轉換的任何對象,以JSON對象的靜態方法。我爲此使用了JavaScriptSerializar。這裏是我的代碼轉換日期成JSON對象在C#

public class JS 
{ 
    public static string GetJSON(object obj) 
    { 
     JavaScriptSerializer js = new JavaScriptSerializer(); 
     string retJSON = js.Serialize(obj); 
     return retJSON; 
    } 
} 

我有另一個類,只有兩個物業,Date & Remark。這裏是我的類

public class RemarkData 
{ 
    public DateTime Date { set; get; } 
    public string Remark { set; get; } 
} 

現在,我轉換RemarkData類的對象轉換成JSON使用下面的代碼

JS.GetJSON(objRemarkData); 

這裏是輸出我得到

{ 「Date」:「/ Date(1389403352042)/」,「備註」:「Sme備註」}

這裏是輸出,我需要

{「日期」:1389403352042,「備註」:「有些備註」}

我應該怎麼辦壽得到這樣的輸出?任何幫助?

+0

你會可能會註冊您自己的'DateTime'轉換器。請問這個問題的答案可以幫助你:http://stackoverflow.com/questions/1341719/custom-javascriptconverter-for-datetime? –

+0

這例子在'DD/MM/yyyy'或我指定一些規則格式轉換日期。但日期如何轉換爲1389403352042這種類型的值? –

+0

它應該是'DateTime.Now.Ticks/TimeSpan.TicksPerMillisecond' –

回答

2
double ticks = Math.Floor(objRemarkData.Date.ToUniversalTime() 
     .Subtract(new DateTime(1970, 1, 1))  
     .TotalMilliseconds); 
var newob = new { Date =ticks, Remark = objRemarkData.Remark}; 
JS.GetJSON(newob); 
+0

你如何獲得的JSON日期字符串「/日期(1389403352042)/」爲DateTime對象,但?只要字符串操作的數值,並從那裏去? –

0

您可以試試JSON.NET,它會將Date序列化爲ISO字符串。

public class JS 
{ 
    public static string GetJSON(object obj) 
    { 
     string retJSON = JsonConvert.SerializeObject(obj); 
     return retJSON; 
    } 
} 

其實,你可以直接使用它,不需要在另一個函數裏面包裝。

這也是asp.net網頁API如何序列化日期對象。爲什麼ISO字符串是一個不錯的選擇的更多信息,請查看此鏈接http://www.hanselman.com/blog/OnTheNightmareThatIsJSONDatesPlusJSONNETAndASPNETWebAPI.aspx