Typescript-从具有日期字符串的Json字符串到具有Date属性的对象的自动转换

时间:2019-05-26 18:36:22

标签: json typescript rest

调用返回JSON的REST服务时,如何格式化日期,以便将其自动转换为Typescript 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 个答案:

答案 0 :(得分:1)

JSON仅处理数字,字符串,数组和对象之类的基元。

JSON中没有描述其内容含义的信息。因此,即使看起来像您的约会,它仍然只是一个字符串。

那么如何手动转换它?好吧,如果您事先知道什么属性名称总是 日期,则可以遍历结果并将其抢先转换。或者,您可以遍历所有值并采用看起来像日期的任何东西并自动进行转换。

第三个选择是拥有某种将某些东西标记为日期并将其用于自动转换的模式。

重点是,没有内置的方法可以推断出这一点,这取决于您对数据进行其他操作