Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角度http.get-转换结果_Angular_Typescript_Angular Http - Fatal编程技术网

Angular 角度http.get-转换结果

Angular 角度http.get-转换结果,angular,typescript,angular-http,Angular,Typescript,Angular Http,角度8 我有一个http.get: this.http.get("https://BahaiPrayers.net/api/prayer/Languages") .subscribe(data => { //return a different object }); 来自服务器的json如下所示: { Id: 1, Name: "English", },.... 我需要http.get将数据转换为此类的typescript数组: export class L

角度8

我有一个http.get:

this.http.get("https://BahaiPrayers.net/api/prayer/Languages")
  .subscribe(data => {
       //return a different object
  });
来自服务器的json如下所示:

{
 Id: 1,
 Name: "English",
},....
我需要http.get将数据转换为此类的typescript数组:

 export class Language {
      languageId: number;
      englishName: string;
  }

有没有办法将http.Get转换为我的对象?

您可以在服务中尝试以下操作:

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

@Injectable({ providedIn: 'root' })
export class LanguageService {

    constructor(private httpClient: HttpClient) { }

    getLanguages(): Observable<Language[]> {
        return this.httpClient.get<any[]>('https://BahaiPrayers.net/api/prayer/Languages')
        .pipe(
            //** This is where the tranformation happens
            map(lanuages => lanuages.map(language => (
               { languageId: language.Id, englishName: language.Name })))
            //** change language.Name to language.English 
            //** if you need the English name of the language 
        );
    }
}

export class Language {
    languageId: number;
    englishName: string;
}

您可以在服务中尝试以下操作:

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';

@Injectable({ providedIn: 'root' })
export class LanguageService {

    constructor(private httpClient: HttpClient) { }

    getLanguages(): Observable<Language[]> {
        return this.httpClient.get<any[]>('https://BahaiPrayers.net/api/prayer/Languages')
        .pipe(
            //** This is where the tranformation happens
            map(lanuages => lanuages.map(language => (
               { languageId: language.Id, englishName: language.Name })))
            //** change language.Name to language.English 
            //** if you need the English name of the language 
        );
    }
}

export class Language {
    languageId: number;
    englishName: string;
}

从最近的Angular版本开始,如果对象与JSON共享相同的属性,则无需再映射结果(将自动完成):

然后在服务中:

getLanguages(): Observable<Language[]> {
    return this.httpClient.get<Language[]>('https://BahaiPrayers.net/api/prayer/Languages');
}
getLanguages():可观察{
返回此.httpClient.get('https://BahaiPrayers.net/api/prayer/Languages');
}

自最近的Angular版本以来,如果对象与JSON共享相同的属性,则不再需要映射结果(将自动完成):

然后在服务中:

getLanguages(): Observable<Language[]> {
    return this.httpClient.get<Language[]>('https://BahaiPrayers.net/api/prayer/Languages');
}
getLanguages():可观察{
返回此.httpClient.get('https://BahaiPrayers.net/api/prayer/Languages');
}

请发布http.get数据的内容请发布http.get数据的内容