2012-05-23 16 views
3

我在客戶端有一個JSON對象,我想在服務器端返回。
要做到這一點,我有隱藏在其中我把我的對象的字符串版本。在JavaScript中以有效的.Net格式對日期進行字符串化

$("#<%=hidden.ClientID%>").val(JSON.stringify(obj)); 

然後,在服務器端,我試着用JavaScriptSerializer反序列化它。

我的問題:將字符串對象包含日期,我不能去JavaScriptSerializer解析它。
我做了什麼:修改日期格式,使其適合支持.Net格式:

function FormatDate(date) { 
    if (typeof (date.getTime) != "undefined") { 
     return '\\/Date(' + date.getTime() + ')\\/' 
    } 

    return date; 
} 

這似乎給一個很好的形式,但是,當我使用JSON.stringify與良好的對象格式化的日期,它添加了一個額外的反斜槓,所以JavaScriptSerializer仍然無法獲得它。

我如何能得到它在隱藏一個有效格式的任何想法?

+0

你能使用UNIX時間戳? – tjameson

回答

1

我有同樣的問題和

'\/Date(' + date.getTime() + ')\/'; 

爲我工作。 你只需要一個雙反斜槓而不是隻有一個反斜槓。

1

我使用下面的代碼序列化後修正數據。

var data = JSON.stringify(object); 
data = data.replace(/\\\\/g, "\\"); 
1

老問題,但萬一有人來到這裏像我尋找一個解決方案,發現這個的作品: https://stackoverflow.com/a/21865563/364568

function customJSONstringify(obj) { 
    return JSON.stringify(obj).replace(/\/Date/g, "\\\/Date").replace(/\)\//g, "\)\\\/") 
}