Литералы даты были предложены и затем отозваны , возможно, мы увидим их в будущем издании спецификации ECMA-262.
Поскольку нет литерала Date в JavaScript , для JSON также нет литерала (объектная нотация JavaScript не будет слишком хорошим именем, если она не может быть проанализирована движком JavaScript; - )). По общему признанию, это неудачно. Многие веб-сервисы будут выводить строку ISO 8601 , например 2010-03-23T23:57Z
, но для его анализа в JavaScript вам потребуется использовать пользовательскую библиотеку, создать пользовательскую функцию или полагаться на спецификацию синтаксического анализа Date в ECMAScript 5, в которой говорится, что реализации должны анализировать строки ISO 8601 изначально.
Если ваш собственный JSON будет анализироваться в JavaScript, вы можете использовать что-то простое, например, миллисекунды с 1 января 1970 г. 00:00 с идентификатором, а затем передать функцию восстановления в JSON.parse:
var myJSON = '{"MyDate":"@1269388885866@"}'
var myObj = JSON.parse(myJSON, function (key, value)
{
// Edit: don't forget to check the type == string!
if (typeof value == "string" && value.slice(0, 1) == "@" && value.slice(-1) == "@")
return new Date(+value.substring(1, -1));
else
return value;
}
Очевидно, что вам понадобится использовать собственный объект JSON, найденный в современных браузерах, или json2.js , чтобы использовать reviver при синтаксическом анализе.