teoadal
@teoadal
.NET + AS3

Сериализация объекта с Date в unix формате — как сделать?

Добрый день!

Сразу скажу, что вопрос именно по Action Script. В том же C# всё делается на ура без бубна.

Имеется клиент на Flash (ActionScript, никаких Flex) и ASP.NET-сервер. Между ними гоняются данные в JSON. Моделька объекта простейшая, но именно в ней - затык:

class Simple
{
    public var Name:String;
    public var Number: String;
    public var RegistrationDate: Date;
}


У меня никак не получается так сериализовать Simple, чтобы это было понятно серверу. Серверу нужна Date сериализованая во что-то вроде Date(1433414354166) (Unix формат вроде), а класс JSON в ActionScript сериализует дату в 2015-04-06T13:43:18.605Z.

Сервер принимает данные в Date(1433414354166) потому, что там используется json-десериализатор (JavaScriptSerializer). Сервер переписать не предлагать.

Что мне нужно сделать, чтобы класс Date из ActionScript 3 нормально преобразовался в unix-формат, да ещё и был в JSONе? Я естественно сделал как советуют мануалы:

Date.prototype.toJSON = function (k):* 
{ 
     return "\/Date(" + this.getTime() + ")\/"; // ЧТО ТУТ????
}


Но сервер это тоже не принимает: говорит, неверный формат DateTime.
Второй день уже бьюсь... помогите!
  • Вопрос задан
  • 214 просмотров
Пригласить эксперта
Ответы на вопрос 1
chlp
@chlp
фулстек
См. https://developer.mozilla.org/en-US/docs/Web/JavaS..., https://msdn.microsoft.com/library/cc836459(v=vs.94).aspx
function replacer(key, value) {
  if (typeof value === "string") {
    return undefined;
  }
  return value;
}

var foo = {foundation: "Mozilla", model: "box", week: 45, transport: "car", month: 7};
var jsonString = JSON.stringify(foo, replacer);

Можно написать такую функцию replacer, которая будет проходится по свойствам переданного объекта и если встретит val instanceof Date, то добавит к JSON строке не JSON.stringify(val), а JSON.stringify(+val).
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы