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
}