1
votes

Comment décompresser les données Json en angulaire?

J'ai des données Json dans ce format

 entrez la description de l'image ici

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

 entrez la description de l'image ici

Et ces informations sont destinées au suivi de la pagination.

 entrez la description de l'image ici a>

J'ai essayé quelque chose comme ça, mais cela donne une erreur comme: -

entrez la description de l'image ici


1 commentaires

Pouvez-vous changer votre propriété observable Fifa [] en GetResponse


3 Réponses :


1
votes

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.


7 commentaires

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 {const fifaUrl = $ {this.baseUrl} / demo / pageNumber / $ {pageNumber} / pageSize / $ {pag‌ eSize} ; // retourne this.httpClient.get (fifaUrl); return this.httpClient.get (fifaUrl) .pipe (map ((response: any []) => response [0])); }


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!



0
votes

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)
);


0 commentaires

0
votes

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


6 commentaires

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