2016-02-05 36 views
0

我有以下字段驗證對象:商店`新的Date()`在JSON對象

{ type:'date', 'min':new Date() } 

我希望我可以存儲new Date()作爲JSON一個表達式,它會被執行時,它的解析

+0

你可以不會在JSON中存儲表達式,並希望它在解析時執行。 – pawel

+1

很難說沒有更多的上下文。它是一些外部庫需要的格式嗎?你在服務器端生成JSON嗎?有可能使驗證器可用,以便它可以接受像'{type:'date',allowPast:false}'這樣的對象? – pawel

+0

可以工作,謝謝@pawel – stackoverfloweth

回答

2

保存時間戳:

{ type:'date', 'min':(new Date()).getTime() } 

你讀它之後回:

var result = JSON.parse('{ "type":"date", "min":1234567 }'); 
result.date = new Date(result.min); 
+0

,因爲它是現場驗證我希望我可以使'min'動態。所以,當頁面加載和SQL發送這個驗證器對象時,它被解析爲今天的日期,而不是一個靜態的日期。那有意義嗎? – stackoverfloweth

+0

根本沒有意義。 Json是數據。你用一些價值來保存它,你就會收回它。 「動態」是代碼:你創建一個函數,當你調用它時,它返回那個時刻的日期。爲此,你不需要在json中有min分鐘 – Gavriel

+0

好的,謝謝你的幫助 – stackoverfloweth

0

日期對象實際上有一個toJSON方法,您可能會發現它有用。不過,我建議使用getTime,因爲它會返回一個通常更靈活的時間戳。

1

JSON不支持的數據類型的日期(它只支持字符串 數, 對象, 陣列, 真,假 ,和 空)。您需要將其轉換爲字符串。

例如,ISO時間:

var json = JSON.stringify({ type:'date', 'min':new Date().toISOString() }); 
 
document.body.appendChild(document.createTextNode(json));

2

您可以將完整的Date對象不存儲在一個JSON字符串。但是你可以嘗試存儲文本代表他:

作爲一個字符串:

{ type:'date', 'min':(new Date()).toString() } 

爲時間戳:

{ type:'date', 'min':(new Date()).getTime() } 

作爲ISO字符串:

{ type:'date', 'min':(new Date()).toJSON() }