node.js - I Angular, hur man analyserar och extraherar HTTP-svar som har en komplex struktur (JSON)?


Jag är ny på Angular och behöver din hjälp här. Jag har en Angular-tjänst som har en API-anropande funktion som visas nedan.


    searcheBay() {
        console.log("calling ebay service");
        return this.httpClient.get (this.ebayURL);
      }

och jag anropar denna funktion från komponenten som visas nedan.


    this.searchService.searcheBay().subscribe((data) => {
          this.svcdata  =  data

      });

Datavariabeln har en komplex JSON-struktur (se bilden nedan).

Den data jag vill läsa finns i elementet "searchResult". Kan du föreslå hur man kan analysera och extrahera elementet "searchResult"? Tack på förhand.

Jag felsökte i Safari DEV-konsolen och ser elementets tillgänglighet som visas nedan.

När jag uppdaterade samma kod i min komponent, stöter jag på kompilering: ERROR in src/app/search/search.component.ts(20,29): error TS2339: Egenskapen 'findItemsByKeywordsResponse' finns inte på typen 'Object'. Vänligen ge dina tankar.

 serviceOnButtonClick(){
 this.searchService.searcheBay().subscribe((data) => {
      this.svcdata  =  data.findItemsByKeywordsResponse[0].searchResult

  });

Svar #1

@javapedia.net prova detta, om du svarar data Objektet är samma som du visade på bilden,

this.searchService.searcheBay().subscribe((data) => {
    this.svcdata  =  data.findItemsByKeywordsResponse[0].searchResult;
    console.log(this.svcdata);
});

Redigera

this.searchService.searcheBay().subscribe((data: any) => {
        this.svcdata  =  data.findItemsByKeywordsResponse[0].searchResult;
        console.log(this.svcdata);
    });

Svar #2

Jag slutade med att använda kartprojektionen som visas nedan. Hoppas detta hjälper.

  serviceOnButtonClick(){
 this.searchService.searcheBay().pipe(map((data:any) => data.findItemsByKeywordsResponse[0].searchResult)).subscribe((data) => {
      this.svcdata  =  data;
      console.log(this.svcdata);
  });

  }