Как развернуть данные Json в angular? - PullRequest
1 голос
/ 22 апреля 2020

У меня есть Json данные в этом формате

enter image description here

Я хочу проанализировать эти данные в angular машинописи, когда я вызываю API остальных. Как это сделать.

Здесь эта часть является моим java объектом класса, который я хочу преобразовать в массив моего класса модели.

"gameId": 66,
"kashScore": 0,
"samScore": 1,
"wonBy": "Sam",
"createUserId": 0,
"lastModifiedUserId": 0,
"creationDate": "2020-04-20T14:05:44.263+0000",
"lastModifiedDateTime": "2020-04-20T14:05:44.264+0000",
"sessionId": 1000,
"count": null

Мой класс модели

enter image description here

И эта информация предназначена для отслеживания нумерации страниц.

enter image description here

Я пробовал что-то подобное, но выдает ошибку как: -

enter image description here

Ответы [ 3 ]

1 голос
/ 22 апреля 2020

Ваш ответ - просто массив. Данные, представляющие Fifa[], являются первым элементом в массиве ответов.

HttpClient не будет магически преобразовывать его для вас. Если вы хотите вернуть Fifa[] из своего сервиса, вам необходимо сопоставить свой ответ с этим типом.

return this.http.get<any[]>(fifaUrl).pipe(
  map((response: any[]) => response[0])
);

РЕДАКТИРОВАТЬ

Вы заявили, что хотите вернуть всю информацию из ответ. В этом случае вы должны вернуть объект, который реализует GetResponse из сервисной функции (и, возможно, подумать о более подходящем имени).

fetchAllGamesRecordPaginate(
  pageNumber: number, pageSize: number
): Observable<GetResponse> { 
  const fifaUrl = ${this.baseUrl}/demo/pageNumber/${pageNumber}/pageSize/${pageSize}; 
  return this.httpClient.get(fifaUrl).pipe( 
    map((response: any[]) => {
      const pagination = response[1];
      return {
        fifa: response[0],
        totalRecord: pagination.totalRecord,
        pageSize: pagination.pageSize,
        pageNumber: pagination.pageNumber,
        totalPages: pagination.totalPages
      };
    })
  ); 
}

Здесь я отображаю массив ответа на объект, который реализует GetResponse.

0 голосов
/ 22 апреля 2020

обновите тип возвращаемого значения до Observable<GetResponse>, затем вам нужно отобразить ответ на структуру GetResponse

fetchAllGamesRecordPaginate(pageNumber:number,pageSize: number):Observable<GetResponse>{ 
  const fifaUrl = ${this.baseUrl}/demo/pageNumber/${pageNumber}/pageSize/${pageSize}; 
  return this.httpClient.get(fifaUrl)
    .pipe(([fifa,paginationInfo]) => (
      {
       fifa ,
       ...paginationInfo
       }
     )
    ); 
}

API возвращает массив с двумя элементами: первым является fifa [] и второй объект с информацией о нумерации страниц

0 голосов
/ 22 апреля 2020

Если вы хотите, чтобы метод просто возвращал Observable<Fifa[]>, вы должны использовать оператор карты на вашем Observable:

return this.httpClient.get<GetResponse>(fifaUrl).pipe(
  map((response) => response.fifa)
);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...