【发布时间】:2012-05-04 09:49:31
【问题描述】:
至少在 Firefox 中,您可以对 Date 对象进行字符串化:
>>> JSON.stringify({'now': new Date()})
'{"now":"2012-04-23T18:44:05.600Z"}'
这是有效的,因为(在 Firefox 中)Date 包含一个 toJSON 方法,该方法由其 JSON 序列化程序使用。但是,这不是 JSON 标准的一部分,所以我想知道为什么存在这种方法,或者更确切地说,为什么内置 JSON 序列化程序会检查这种方法。由于它不是标准化的,如果不先测试内置序列化程序是否理解它,则无论如何都不能安全地使用它,否则使用自定义序列化程序(例如json2.js)
【问题讨论】:
-
它是 ECMAScript 标准的一部分。
-
Chrome中也存在:Date.prototype.toJSON
-
我以为它可能调用了 toString,但我试过了,你得到了不同格式的字符串。
-
@ChaosPandion:将其作为答案发布(例如,引用 ES 标准),我会接受。刚刚检查了那个文档,它确实定义了如何序列化未知对象。
-
在将日期转换为字符串时,您当然应该使用 ISO-8601。但是,此时您要序列化的 是 字符串,而不是 Date 对象......并且 JSON 支持字符串就好了。
标签: javascript json date