Javascript/json date literal

Что такое буква буква для JSON/JavaScript (если такая вещь существует?)

Ответы

Ответ 1

Были предложены литералы даты возможно, мы увидим их в будущем выпуске спецификации ECMA-262.

Поскольку нет литерала даты в JavaScript, для JSON нет литерала (JavaScript Object Notation не будет слишком хорошим именем если он не может быть проанализирован движком JavaScript;-)). По общему признанию, это несчастливо. Многие веб-службы будут выводить строку ISO 8601, например. 2010-03-23T23:57Z, но для того, чтобы разобрать его на JavaScript, вам нужно будет использовать пользовательскую библиотеку, создать пользовательскую функцию или полагаться на спецификацию синтаксического анализа 5-й даты ECMAScript, в которой говорится, что реализации должны анализировать строки ISO 8601 изначально.

Если это ваш собственный JSON, который будет анализироваться на JavaScript, вы можете использовать что-то простое, например миллисекунды, с 1 января 1970 года 00:00 с идентификатором, а затем передать функцию reviver в JSON.parse:

var myJSON = '{"MyDate":"@[email protected]"}'
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 при разборе.

Ответ 2

Нет специального формата для литералов даты.

В Javascript вы можете написать new Date(2010, 2, 23) (К сожалению, месяцы основаны на нуле.)

Ответ 3

зависит от сериализатора.

он может быть одним из:

/Дата (1224043200000)/

/Дата (1198908717056)/(MS JSON Date)

/Дата (1198908717056-1000)/(+/- часовой пояс)

новая дата ( "2010-03-24" ) (это общепринятый "javascript json" из того, что я понимаю)

"2010-03-24"

и т.д.

Ответ 4

Для строкового представления даты JSON использует строковое обозначение, например. "2010-03-24...", а для представления объекта он использует объектную нотацию "{...}"