Typescript - автоматическое преобразование строки Json со строкой даты в объект со свойством Date - PullRequest
1 голос
/ 26 мая 2019

При вызове службы REST, возвращающей JSON, как я могу отформатировать дату, чтобы она автоматически конвертировалась в объект Date машинописного текста?

Результатом вызова REST-вызова является следующее сообщение:

{"id": 3796, ..., "startTempValue": "2019-05-26T19: 39:01Z "}

Я также пробовал этот формат ISO:

{" id ": 3796, ...," startTempValue ":" 2019-05-26T19:39: 01.000Z "}

Объект модели:

export class Settings {
    public id: number;
    public shortName;
    public description: string;
    public value: string;
    public possibleValues: string;
    public startTempValue: Date;
}

Результатом startTempValue является строка ...?!Я хочу, чтобы startTempValue был объектом Date.

Конечно, я мог бы вручную преобразовать строку Date в объект Date.Итак, делая что-то вроде кода ниже при получении результата службы REST. Но должен быть лучший способ. Другой альтернативой было бы преобразование его на сервере в эпоху (миллисекунды).Это возможно, но, тем не менее, этот «строковый» вариант более читабелен.

if ( this.settings[i].startTempValue !== undefined && 
     this.settings[i].startTempValue !== null) {
    this.settings[i].startTempValue = new Date(this.settings[i].startTempValue);
} else {
    this.settings[i].startTempValue = null;
}

1 Ответ

2 голосов
/ 27 мая 2019

JSON работает только с такими примитивами, как числа, строки, массивы и объекты.

В JSON нет информации, описывающей, что означает ее содержимое. Поэтому, даже если что-то выглядит для вас как свидание, это все равно всего лишь строка.

Так как вы можете конвертировать его вручную? Что ж, если вы заранее знаете, какие имена свойств являются всегда датами, вы можете циклически просмотреть результат и превентивно преобразовать их. Или вы можете перебрать все значения и взять все, что выглядит как дату, и автоматически конвертировать.

Третий вариант - иметь какую-то схему, которая помечает определенные вещи как даты, и использовать ее для автоматического преобразования.

Суть в том, что нет никакого встроенного способа сделать это, и вы как-то можете сделать что-то еще со своими данными

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...