2016-02-05 70 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() }