将res.json()转换为数组<;对象>;
我有一个java Web服务,它列出了一个Json对象列表,这些对象的属性>将res.json()转换为数组<;对象>;,json,angular,typescript,Json,Angular,Typescript,我有一个java Web服务,它列出了一个Json对象列表,这些对象的属性> public class Oferta { private int id; private String categoria; private String descricao_oferta; private String anunciante; private double valor; private boolean destaque; private List<String> imagens; }
public class Oferta {
private int id;
private String categoria;
private String descricao_oferta;
private String anunciante;
private double valor;
private boolean destaque;
private List<String> imagens;
}
只要您的类属性名称与json属性匹配,您就必须对数据进行类型转换
getData():Promise<Oferta[]>{
return this.http.get(this.apiURL)
.map((res: Response) => <Oferta []>res.json()).toPromise()
}
getData():承诺{
返回this.http.get(this.apirl)
.map((res:Response)=>res.json()).toPromise()
}
您必须从rxjs导入
toPromise
函数更新:我可以使用以下命令完成此操作:this.http.get(this.actionUrl) .map(res=>res.json()) .订阅( 数据=>{ 此.ofertas=数据; }, 错误=> console.log('cannotgetofertas'), ()=>console.log('FOi')
但是我只能直接在我的Home.component.ts上,尝试使用从我的Oferta.service.ts获取数据的方法,我不能在Oferta.service中使用http,因此不确定我将如何在除了组件之外的不同类中执行此操作。这是一个javascript/typescript问题。与JavaType Observable无关的内容不能分配给类型“Oferta[]类型“Observable”中缺少“.Property includes”。您是否已将返回类型设置为
getData
?您是如何订阅的?请查看完整方法+我如何在家中调用。组件,感谢帮助人员。用代码编辑您的问题。。还可以使用Observable.toPromise()若要转换为承诺,您如何在组件中声明了Oferta的
?Oferta公共:Oferta[];
public getData(): Promise<Oferta[]>{
this.ofertas = this.http.get(this.apiURL)
.map((res: Response) => <Oferta[]>res.json()) << ERROR WHEN CASTING
return new Promise((resolve,reject)=>{
let deu_certo = true
if(deu_certo){
setTimeout(() => resolve(this.ofertas),3000);
}
else{
reject({codigo_erro: 404,mensagem_erro: 'Servidor nao encontrado'})
}
//console.log('passou aqui')
})
.then(( ofertas: Oferta[]) => {
console.log('segundo then')
return new Promise((resolve2,reject2) => {
setTimeout(() => {resolve2(ofertas )},3000)
})
})
.then((ofertas: Oferta[]) => {
console.log('terceiro then executado apos 3 sec , aguardando outra promisse ser resolvida')
return ofertas;
})
}
this.ofertasService.getOfertas2()
.then(
( ofertas: Oferta[] ) => { this.ofertas = ofertas
console.log('a funçao resolve() foi resolvida depois de 3 segundos')
})
.catch((param: any) => {
console.log(param)
})
}
getData():Promise<Oferta[]>{
return this.http.get(this.apiURL)
.map((res: Response) => <Oferta []>res.json()).toPromise()
}