【问题标题】:Custom JSON Parser for Dates in Typescript in different classes不同类中 Typescript 中日期的自定义 JSON 解析器
【发布时间】:2018-10-17 19:56:24
【问题描述】:

我有一个 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 类添加一个自定义解析器,但是我在多个类上都有日期,我不想为每个类创建一个解析器,因为其他属性(日期除外)是解析得很好。

所以我的问题是:有没有办法为所有日期字段添加自定义解析器?

附:这是一个示例 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"}}

【问题讨论】:

  • 格式化和发送自纪元以来的毫秒字符串并使用日期管道获取您需要的格式不是更容易吗?
  • 告诉该 Java 后端服务器的作者了解 ISO 8601 标准。 java.time 类默认支持这些标准文本格式。

标签: java json angular typescript


【解决方案1】:

这种不友好的日期格式可能是后端造成的。 Angular 中的任何 API 的日期我从来没有遇到过任何问题。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多