类型中不同类型的Typescript中日期的自定义JSON解析器

时间:2018-10-17 19:56:24

标签: java json angular typescript

我有一个Angular WebApp,它通过http get从后端Java服务器检索数据。 示例:

public getStateForUser(): Observable<UserRegistrationState> {
   return this.http.get<any>(Environment.getServerAddress() + '/' + 
   UserRegistrationStateService.SERVICE_URL + '/getStateForUser', {
      params: {
        sessionIdentityStr: this.authGuard.getSession().sessionIdentityStr
      }
   });
}

export class UserRegistrationState {
  registerDate: Date;
  emailVerified: boolean;
  unlocked: boolean;
}

这对所有字段都适用。除日期外。 日期未正确解析,因此我想添加一个自定义解析器,在其中可以告诉他他如何从json日期字符串中获取日期值。

当然,现在我可以为整个UserRegistrationState类添加一个自定义解析器,但是我在多个类上都有日期,并且我不想为每个类都创建一个解析器,因为其他属性(日期除外) )解析得很好。

所以我的问题是:是否可以为所有“日期”字段添加自定义解析器?

P.S。这是示例JSON日期字符串,可从Java LocalDateTime自动解析:

"registerDate":{"dayOfMonth":17,"dayOfWeek":"WEDNESDAY","dayOfYear":290,"month":"OCTOBER","monthValue":10,"year":2018,"hour":21,"minute":21,"nano":370000000,"second":16,"chronology":{"id":"ISO","calendarType":"iso8601"}}

1 个答案:

答案 0 :(得分:1)

这种不友好的日期格式可能是由后端引起的。我从Angular的任何API的日期中都没有遇到任何问题。

您可以创建getter / setter来封装类中某些字段的自定义解析逻辑。

在我看来,固定后端侧并从类移到Angular侧的接口会更好。接口更适合TypeScript中的普通DTO模型。