J'ai des données Json dans ce format
Je souhaite analyser ces données en caractères typographiques angulaires lorsque j'appelle l'API rest. Comment faire.
Ici, cette partie est mon objet de classe java que je veux convertir en mon tableau de classe de modèle.
"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
Ma classe de modèle
Et ces informations sont destinées au suivi de la pagination.
J'ai essayé quelque chose comme ça, mais cela donne une erreur comme: -
3 Réponses :
Votre réponse n'est qu'un tableau. Les données qui représentent Fifa []
sont le premier élément du tableau de réponse.
Le HttpClient
ne le convertira pas comme par magie pour vous. Si vous souhaitez renvoyer Fifa []
à partir de votre service, vous devez mapper votre réponse à ce type.
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 }; }) ); }
MODIFIER
Vous avez indiqué que vous souhaitiez renvoyer toutes les informations de la réponse. Dans ce cas, vous devriez renvoyer un objet qui implémente GetResponse
à partir de la fonction de service (et probablement penser à un nom plus approprié).
return this.http.get<any[]>(fifaUrl).pipe( map((response: any[]) => response[0]) );
Me voici mapper le tableau de réponse à un objet qui implémente GetResponse
.
Cela a fonctionné et comment vais-je accéder à l'enregistrement de pagination
Où voulez-vous qu'il aille? Il n'y a pas de pagination sur le type de données Fifa []
Où que vous y accédiez, vous l'obtiendrez en effectuant response [1]
fetchAllGamesRecordPaginate (pageNumber: number, pageSize: number): Observable $ {this.baseUrl} / demo / pageNumber / $ {pageNumber} / pageSize / $ {pag eSize} code>; // retourne this.httpClient.get
Alors, pouvez-vous s'il vous plaît :) éditer votre réponse pour montrer comment je peux obtenir à la fois la réponse [0] et la réponse [1], je suis nouveau dans le typographie et j'ai des problèmes avec la syntaxe de :).
J'ai modifié ma réponse. C'est le long chemin à parcourir, mais j'espère le plus clair
Génial @Kurt Hamilton. Merci mec!
Si vous voulez que la méthode retourne simplement un Observable
, vous devez utiliser un opérateur de carte sur votre Observable
:
return this.httpClient.get<GetResponse>(fifaUrl).pipe( map((response) => response.fifa) );
mettez à jour le type de retour sur Observable
puis vous devez mapper la réponse à la structure 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 } ) ); }
l'API renvoie un tableau avec deux éléments, le premier est le fifa [] et le le second est un objet avec des informations de pagination
Alors que sera dans GetResponse
Non, je veux quel code ira dans l'interface GetResponse
l'API renvoie un tableau de deux éléments, vous devez donc mapper le tableau à GetResponse
la réponse mise à jour vous donnera une réponse avec la structure GetResponse
Mais vous n'avez pas défini l'interface GetResponse que vous renvoyez
que voulez-vous dire Mais vous n'avez pas défini GetResponse
J'ai mappé la réponse d'un tableau à un objet avec la même structure de l'interface
Pouvez-vous changer votre propriété observable Fifa [] en GetResponse