gpt4 book ai didi

angular - 您如何将 json res 数据解析为 http observable 中的模型?

转载 作者:可可西里 更新时间:2023-11-01 16:40:07 26 4
gpt4 key购买 nike

我想知道如何将 json 对象解析为模型并在数组中使用该模型。我尝试了以下方法,但在 Observable 中接收到数据后它对我不起作用:

getExampleData() : Observable<MyModel[]> {
return this.http.get<MyModel[]>( this.exampleGetURL ).pipe(
map((res:Response) => res),
catchError( this.handleError )
);
}

在这里,我尝试记录本应解析到 MyModel[] 中的 res 数据,但它仍然是一个 json 对象。

this.myService.getExampleData().subscribe( (res:MyModel[]) => {
console.log(res);
});

这是模型:

export class MyModel {
public name :string;
public price :number;

constructor( name:string, price:number ) {
this.name = name;
this.price = price;
}
public printDetails() {
console.log(this.name);
}
}

遇到这种情况我该怎么办?

更新:

我知道这不是正确的方法,因为我们应该尽可能保持代码干净整洁,但我知道这确实有效:

getExampleData() : Observable<MyModel[]> {
return <Observable<MyModel[]>>this.http.get( this.exampleGetURL ).pipe(
map(res => {
let myModels:MyModel[] = [];
for( let el of <MyModel[]>res )
myModels.push( new MyModel(el.name, el.price) );
return myModels;
}),
catchError( this.handleError )
);
}

有没有办法清理这个烂摊子?

最佳答案

您的模型 MyModel 是一个类。 HttpClient 将主体解析为普通对象(通常可以由 interface 定义),而不是类实例。 ( source )

但即使将模型更改为界面也无法解决您的问题。 Angular 没有做任何转换。检查这个SO post了解更多信息。

关于angular - 您如何将 json res 数据解析为 http observable 中的模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51653642/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com