解析JSON对象的打字稿

问题描述 投票:0回答:1

我是新来使用弹簧启动两个角和建设服务。因此,请原谅,如果下面的问题是非常简单的。

我从弹簧安置服务的下列JSON响应。我试图映射到角的材料数据表此服务响应。

然而,正如我还是新的角度,打字稿和解析JSON对象,可以请你帮我对如何映射下面我界面中列出的JSON响应指针。

JSON响应

{
    "content": [
        {
            "id": "1000",
            "name": "R&D IN",
            "location": "IN",
            "costCenter": "RD-001"
        }
    ],
    "last": false,
    "totalElements": 10,
    "totalPages": 10,
    "size": 1,
    "number": 1,
    "sort": [
        {
            "direction": "ASC",
            "property": "name",
            "ignoreCase": false,
            "nullHandling": "NATIVE",
            "ascending": true,
            "descending": false
        }
    ],
    "first": false,
    "numberOfElements": 1
}

我需要以下两个属性在上面的JSON响应映射 - >内容和总记录

我有角以下服务代码

department.service.ts

getAllDepartments(filter: string, sortOrder: string, pageNumber: number, pageSize: number): Observable<DepartmentList>{

    return this.http.get<DepartmentList>(this.API_URL + '/api/department/', {
      params: new HttpParams()
          .set('filter', filter)
          .set('sort', 'name')
          .set('page', pageNumber.toString())
          .set('size', pageSize.toString())
    });
  }

department.component.ts

this.deptService.getAllDepartments(filter, sortDirection,pageIndex, pageSize)
      .pipe(
          catchError(() => of([])),
          finalize(() => this.loadingSubject.next(false)))
      .subscribe(
          departments => {
            let obj = JSON.stringify(departments);
            console.log('Department List :: ', departments);
            console.log(obj.content);
            this.departmentSubject.next(departments.content);
            this.departmentRecCount.next(departments.totalElements);
          });

然而,最后两行显示在我的角度误差。然而,代码工作,尽管错误

错误是出现在下面两行 -

this.departmentSubject.next(departments.content);
this.departmentRecCount.next(departments.totalElements);

错误消息 - 错误TS2339:房产“内容”上不存在类型“任何[] | DepartmentList”。住宅“内容”不上键入“任何[]”存在。

Department.model.ts

export interface DepartmentList {
    content: Department[];
    totalElements: number;
  }

  export interface Department {
    id: string;
    name: string;
    location: string;
    costCenter: string;
  }

如何解决上述问题。

如果已经在其他线程解释请原谅。

json typescript observable angular7
1个回答
1
投票

尝试分配它之前强制类型转换departments

const deptList = departments as DepartmentList;

this.departmentSubject.next(deptList.content);
this.departmentRecCount.next(deptList.totalElements);
© www.soinside.com 2019 - 2024. All rights reserved.