В Java все находится в форме класса.
Если вы хотите использовать любой объект, тогда у вас есть две фазы:
Пример:
Object a;
a=new Object();
То же самое для концепции массива
Item i[]=new Item[5];
i[0]=new Item();
Если вы не дают секцию инициализации, тогда возникает NullpointerException
.
Если вы знаете, что строка определенно является датой, я предпочитаю сделать это:
new Date(parseInt(value.replace("/Date(", "").replace(")/",""), 10))
Значение JSON является строкой, числом, объектом, массивом, верным, ложным или пустым. Таким образом, это - просто строка. Нет никакого официального способа представить даты в JSON. Этот синтаксис является с asp.net ajax реализацией. Другие используют формат ISO 8601.
можно проанализировать его как это:
var s = "\/Date(1221644506800-0700)\/";
var m = s.match(/^\/Date\((\d+)([-+]\d\d)(\d\d)\)\/$/);
var date = null;
if (m)
date = new Date(1*m[1] + 3600000*m[2] + 60000*m[3]);
Регулярное выражение, используемое в Ajax ASP.net, десериализовывает метод, ищет строку, которая похожа "/на Дату (1234) /" (Сама строка на самом деле должна содержать кавычки и наклонные черты). Для получения такой строки необходимо будет выйти из кавычки и символов наклонной черты влево, таким образом, код JavaScript для создания строки будет похож "\" \/Date (1234) \/\"".
Это будет работать.
Sys.Serialization.JavaScriptSerializer.deserialize("\"\\/Date(1221644506800)\\/\"")
Это довольно странно, но я нашел, что должен был сериализировать дату, затем сериализировать строку, возвращенную из этого, затем десериализовать на стороне клиента однажды.
Что-то вроде этого.
Script.Serialization.JavaScriptSerializer jss = new Script.Serialization.JavaScriptSerializer();
string script = string.Format("alert(Sys.Serialization.JavaScriptSerializer.deserialize({0}));", jss.Serialize(jss.Serialize(DateTime.Now)));
Page.ClientScript.RegisterStartupScript(this.GetType(), "ClientScript", script, true);
Большое количество является стандартным временем JS
new Date(1221644506800)
среда 17 сентября 2008 19:41:46 GMT+1000 (EST)
Для тех, кто не хочет использовать Microsoft Ajax, просто добавьте функцию-прототип к строковому классу.
Например
String.prototype.dateFromJSON = function () {
return eval(this.replace(/\/Date\((\d+)\)\//gi, "new Date($1)"));
};
Не хотите использовать eval? Попробуйте что-нибудь простое, например
var date = new Date(parseInt(jsonDate.substr(6)));
. Кстати, я раньше думал, что Microsoft вводит в заблуждение, используя этот формат. Однако спецификация JSON не очень ясна, когда дело доходит до определения способа описания дат в JSON.
Бертран Лерой, который работал над ASP.NET Atlas / AJAX, описал структуру вывода JavaScriptSerializer DateTime и раскрыл происхождение таинственных косых черт в начале и в конце. Он дал такую рекомендацию:
выполните простой поиск «\ / Date ((\ d +)) \ /» и замените его на «new Date ($ 1)» перед eval (но после проверки)
Я реализовал это как:
var serializedDateTime = "\/Date(1271389496563)\/";
document.writeln("Serialized: " + serializedDateTime + "<br />");
var toDateRe = new RegExp("^/Date\\((\\d+)\\)/$");
function toDate(s) {
if (!s) {
return null;
}
var constructor = s.replace(toDateRe, "new Date($1)");
if (constructor == s) {
throw 'Invalid serialized DateTime value: "' + s + '"';
}
return eval(constructor);
}
document.writeln("Deserialized: " + toDate(serializedDateTime) + "<br />");
Это очень близко ко многим другим ответам: