【发布时间】:2020-10-19 06:50:43
【问题描述】:
我需要获取我的应用程序的服务对后端执行的 GET 请求的 JSON 响应,获取其中的某些部分并将其放在我创建的接口数组中,以便我可以开始使用它。
这就是 JSON 的样子:
[{
"id": 1,
"name": "Lar das meninas",
"latitude": -23.6695527,
"longitude": -46.603418,
"about": "Sobre o orfanato",
"instructions": "Venha visitas",
"opening_hours": "Das 8h até 18h",
"open_on_weekends": false,
"directory": {
"directoryName": "/PROD/FILE",
"server": {
"serverName": "XYZ34"
}
}
},
{
"id": 2,
"name": "Petito Orfanato",
"latitude": -23.6740118,
"longitude": -46.6066612,
"about": "Sobre o orfanato",
"instructions": "Venha visitas",
"opening_hours": "Das 8h até 18h",
"open_on_weekends": false,
"directory": {
"directoryName": "/PROD/FILE",
"server": {
"serverName": "XYZ34"
}
}
}
]
我只需要这些中的名称、纬度、经度、目录名和服务器名,所以我尝试创建这个界面来塑造响应:
export interface Orphanage {
name: string,
latitude: number,
longitude: number
}
如您所见,由于嵌套,我什至没有尝试获取 directoryName 和 serverName。
我认为打字稿会匹配名称并仅获取界面中的内容,因此我进行了这样的调用并尝试 console.log 但它记录了整个响应。
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http'
import { Orphanage } from './orphanage';
import { tap } from 'rxjs/operators';
@Injectable({
providedIn: 'root'
})
export class OrphanageService {
constructor(private http: HttpClient) { }
getOrphanages() {
return this.http.get<Orphanage[]>('http://localhost:3333/orphanages').pipe(
tap((res: Orphanage[]) => console.log(res))
);
}
}
我也尝试从组件调用服务,订阅 Observable,将其结果分配给组件的数组属性并 console.log 它,但得到相同的结果:
import { Component, OnInit } from '@angular/core';
import { Orphanage } from '../orphanage';
import { OrphanageService } from '../orphanage.service';
@Component({
selector: 'app-orphanages-main',
templateUrl: './orphanages-main.component.html',
styleUrls: ['./orphanages-main.component.scss']
})
export class OrphanagesMainComponent implements OnInit {
orphanages: Orphanage[];
constructor(private orphanageService: OrphanageService) { }
ngOnInit(): void {
this.orphanageService.getOrphanages()
.subscribe((orphanages: Orphanage[]) => {
this.orphanages = orphanages;
console.log(this.orphanages);
});
}
}
我需要做些什么来实现这一点,对于嵌套的 directoryName 和 serverName 我需要做些什么不同的事情?
谢谢!
【问题讨论】:
标签: angular typescript rxjs