【问题标题】:Working with complex json via HTTP request in Angular project (MEAN STACK)在 Angular 项目(MEAN STACK)中通过 HTTP 请求处理复杂的 json
【发布时间】:2020-05-05 15:23:33
【问题描述】:

我目前正在开发自己的项目,但在处理“大型”JSON 文件时遇到了问题。我从在线 MongoDB(Mongo Atlas)获取数据,然后通过简单的节点 JavaScript REST API 访问该数据。鉴于 JSON 的复杂性很大,我不确定如何进行。我通常会创建一个 JSON 模型来处理它。但在这种情况下,我真的不知道该怎么做。架构是这样的:

Swagger documentation

如您所见,它有很多嵌套数组。 我的问题是,我应该使用类还是接口?我需要为每个数组创建一个新类吗?

目前,这是我正在使用的模型: (这适用于 JavaScript,但当然不适用于 TypeScript,因为对象没有真正定义)

    export class Match{
        constructor(
            public _id: string,
            public game: Object
        ){}
    }

我知道我可以将整个 swagger UI 导入到我自己的项目中(真的不知道该怎么做,https://www.npmjs.com/package/swagger-ts-generator,这可能有效),但我只需要一个架构。

任何帮助将不胜感激。

【问题讨论】:

    标签: json angular typescript schema


    【解决方案1】:

    坦率地说,当 JSON 超过特定长度时,我真的不使用模型来处理它(Java 方面),事实上我根本没有在 Angular 中使用它们。它有优点也有缺点,尤其是在谈论打字稿上下文时,它并不是真正推荐的东西,但它确实可以。

      public getData(): Observable<any> {
        return this.http.get(environment.apiBaseUrl + "/data/", this.prepareHeader());
      }
    

    那么你实际上只是在Observable 上的subscribe 并通过它们的键访问你需要的变量,例如

    this.dataAcquireService.getData().subscribe(
      (res) => {
        this.data = res;
        for (let i = 0; i < this.data.length; i++) {
          if (!this.selectGroups[this.data[i].name]) this.selectGroups[this.data[i].name] = [];
          this.selectGroups[this.data[i].name].push(this.data[i]);
        }
      },
      (err) => this.dataAcquireService.handleErrorResponse(err)
    )
    

    归根结底,这取决于品味和期望,因为这两种方式都会导致预期的目标,一种可能会被教条主义者认为是肮脏的,另一种可能会被认为太乏味。

    【讨论】:

    • 那很快! Thx maio290 我会试一试,如果它对我有用,我会回来的。我真的不需要干净的代码,这是我自己的项目,只要我可以访问 Angular 中的变量,我就可以开始了。
    猜你喜欢
    • 2018-11-04
    • 2017-02-13
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-09
    • 2013-04-06
    相关资源
    最近更新 更多