Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.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:如何将HttpClient请求的JSON结果映射到类实例?_Json_Angular_Typescript_Rxjs_Angular Httpclient - Fatal编程技术网

Angular:如何将HttpClient请求的JSON结果映射到类实例?

Angular:如何将HttpClient请求的JSON结果映射到类实例?,json,angular,typescript,rxjs,angular-httpclient,Json,Angular,Typescript,Rxjs,Angular Httpclient,我有以下代码,似乎是错误的: public search(searchString: string): Observable<Array<ClientSearchResult>> { let params = new HttpParams().set('searchString', searchString); return this.http .get<Array<ClientSearchResult>>(thi

我有以下代码,似乎是错误的:

public search(searchString: string): Observable<Array<ClientSearchResult>> {
    let params = new HttpParams().set('searchString', searchString);

    return this.http
        .get<Array<ClientSearchResult>>(this.searchUrl, { params: params })
        .map((results: ClientSearchResult[]) => results.map((r: ClientSearchResult) => new ClientSearchResult(r)));
}

作为一个选项,您可以尝试使用TypeScript
As
操作符将API响应转换为ClientSearchResult类型

import { Http, Response } from '@angular/http';

public search(searchString: string): Observable<ClientSearchResult[]> {
    const params = new HttpParams().set('searchString', searchString);
    return this.http.get(this.searchUrl, { params: params })
        .map((results: Response) => results.json() as ClientSearchResult[]);
}

作为一个选项,您可以尝试使用TypeScript
As
操作符将API响应转换为ClientSearchResult类型

import { Http, Response } from '@angular/http';

public search(searchString: string): Observable<ClientSearchResult[]> {
    const params = new HttpParams().set('searchString', searchString);
    return this.http.get(this.searchUrl, { params: params })
        .map((results: Response) => results.json() as ClientSearchResult[]);
}

我们使用一个很棒的库将json映射到typescript对象。


json对象映射器依赖于reflect元数据库,因为它使用decorators序列化和反序列化数据。

我们使用一个很棒的库将json映射到typescript对象。


json对象映射器依赖于reflect元数据库,因为它使用decorators来序列化和反序列化数据。

我一直在使用这个非常好的(发布时是最新的)库:


它可以处理嵌套类等非常复杂的情况。

我一直在使用这个非常好的(发布时是最新的)库:


它可以处理嵌套类等非常复杂的情况。

如果您不想手动设置许多属性,但更多或更少,可以使用
Object.assign(new ClientSearchResult(),decodedJsonObject)
向我们展示ClientSearchResult的构造函数,好吗?也许“new ClientSearchResult(r)”不是将转换应用于ClientSearchResult实例的方法。@Luillyf我已经更新了这个问题。如果您不想手动设置许多属性,但更多或更少,您可以使用
Object.assign(new ClientSearchResult(),decodedJsonObject)
。您能告诉我们,ClientSearchResult的构造函数?也许“new ClientSearchResult(r)”不是将转换应用于ClientSearchResult实例的方法。@Luillyfe我已经更新了问题。谢谢你的建议。但是,我尝试使用新的
HttpClient
而不是
Http
HttpClient
给我一个类型化数组,而不是
响应
。我会以操作员的身份查看
,看看我能不能做些什么。谢谢你的建议。但是,我尝试使用新的
HttpClient
而不是
Http
HttpClient
给我一个类型化数组,而不是
响应
。我将以
操作符的身份查看
,看看我能不能用它做些什么。
interface ClientSearchResult {
  id: number;
  // etc
}