我有一个 API 返回以下数据:
[
{
"id": 1,
"symbol": "20MICRONS",
"series": "EQ",
"isin": "INE144J01027",
"created_at": "2018-03-05 16:24:10",
"updated_at": "2018-03-05 16:24:10"
},
{
"id": 2,
"symbol": "3IINFOTECH",
"series": "EQ",
"isin": "INE748C01020",
"created_at": "2018-03-05 16:24:10",
"updated_at": "2018-03-05 16:24:10"
},
{
"id": 3,
"symbol": "63MOONS",
"series": "EQ",
"isin": "INE111B01023",
"created_at": "2018-03-05 16:24:10",
"updated_at": "2018-03-05 16:24:10"
},
{
"id": 4,
"symbol": "VARDMNPOLY",
"series": "EQ",
"isin": "INE835A01011",
"created_at": "2018-03-05 16:24:10",
"updated_at": "2018-03-05 16:24:10"
}
]
我希望以 Angular 解析来自 api 的此响应。我能够在控制台中记录数据,但无法映射数据类型。
export class SymbolsComponent implements OnInit {
allSymbols: Symbols[] = [];
constructor(private http: HttpClient, private apiUrl: ApiUrlService) { }
ngOnInit() {
this.fetchListOfAllSymbol();
}
fetchListOfAllSymbol() {
this.http.get(this.apiUrl.getBaseUrl() + 'symbol').subscribe(data => {
console.log(data);
});
}
}
我的模型文件如下所示:
export class Symbols {
constructor(private symbol: string, private series: string, private isin: string, private created: string) {
}
}
从 API 获得响应后,我需要将结果填充到 allSymbols
变量中。
最佳答案
您的 JSON 对象属性不是 Symbols
的 100% 映射,您必须对其进行转换。
这里是一个例子,接口(interface)ServerSymbols
包含了JSON对象的所有属性,现在您可以将fetchListOfAllSymbol()
修改为:
fetchListOfAllSymbol() {
this.http.get<ServerSymbols[]>(this.apiUrl.getBaseUrl() + 'symbol')
.subscribe((data: ServerSymbols[]) => {
console.log(data);
// convert ServerSymbols to Symbols
});
}
GET 将返回 ServerSymbols 列表
export interface ServerSymbols {
id: number;
symbol: string;
series: string;
isin: string;
created_at: string;
updated_at: string;
}
将 ServerSymbols 对象转换为 Symbols 对象:
convertFromServer(serverSymbols: ServerSymbols): Symbols {
return new Symbols(serverSymbols.symbol, serverSymbols.series, serverSymbols.isin, serverSymbols.created_at);
}
关于json - 从 API 中解析 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49156433/