角度7:如何正确解析后端响应以从字符串中提取日期?

时间:2019-02-09 20:06:49

标签: angular typescript deserialization json-deserialization

我有返回正在使用的电影的功能(但还有另一种返回电影收藏的方法):

postNewMovie(movie: Movie): Observable<Movie> {
    const requestUrl = `${apiUrl}/create`;
    const movieJSON = JSON.stringify(movie);
    return this.http.post(requestUrl, movieJSON, httpOptions).pipe(
        tap((result: Movie) => console.log(`Posted movie with id = ${result.id} and title = ${result.title}!`))
    );

模型如下:

export class Movie {
    (...)
    releaseDate?: Date;

    constructor(obj: any) {
      (...)
      this.releaseDate = obj.releaseDate;
    }
}

现在,如何正确地从后端api调用(采用 ISO8601 格式)转换字符串发布日期,我应该在哪里做?我看到了类似的建议,建议在JSON解析器中使用一些自定义的reviver函数,但是我也可以在模型的构造函数中使用它,那么最好的方法是什么?

您认为我可以使用 moment.js 库进行此类转换还是“过度杀伤”?

1 个答案:

答案 0 :(得分:1)

在您应该使用的模型中的构造函数上尝试

 this.releaseDate = (obj.releaseDate ) ? new Date(obj.releaseDate ) : new Date();