我有一个通过API获取结果的服务。 API将结果作为JSON数组返回。但是我需要将结果作为JSON对象。
API返回:
[{"record_id":"101","demographics_spring_complete":"2"}]
我需要作为对象格式:
{"record_id":"101","demographics_spring_complete":"2"}
我的service.ts:
getStatus() {
return this.http.post(this.baseUrl).map(res => res.json())
.catch(this.handleError);
}
还有我的conponent.ts:
export class BaselineListComponent implements OnInit {
statuses: any[] = [];
constructor(
public recordService: RecordsService
) { }
loadStatus() {
this.recordService.getStatus('demographic_spring', 'baseline_visit_a_arm_1', 101).subscribe(statuses => {
this.statuses = statuses;
console.log(this.statuses);
});
}
}
我确实尝试了一些转换选项,但是由于API返回了一个数组,因此无法将它们转换为JSON对象。任何帮助,将不胜感激。
答案 0 :(得分:1)
添加一个do
运算符并返回第一个元素。
getStatus() {
return this.http.post(this.baseUrl).map(res => res.json())
.do(res => res[0])
.catch(this.handleError);
}
答案 1 :(得分:1)
似乎您需要数组的第一个对象,如下使用array [index],
loadStatus() {
this.recordService.getStatus('demographic_spring', 'baseline_visit_a_arm_1', 101).subscribe(statuses => {
this.statuses = statuses;
console.log(this.statuses[0]);
});
}
答案 2 :(得分:0)
创建模型类(record.model.js)
export class Record {
constructor(
record_id: string,
demographics_spring_complete : string,
){}
}
在Service.js类上,您需要这样编码:
在Service.js类中导入一些库
import { Record } from '../models/record.model'
import 'rxjs'
import { Observable } from 'rxjs/Rx'
创建函数以获取记录
getRecords(): Observable<Record[]> {
return this.http.get(this.userApiUrl)
.map((res: Response) => res.json())
.catch((error: any) => Observable.throw(error.json().error || 'Server Error'))
}
在component.ts文件中,添加全局变量:
record: Record;
然后订阅服务的记录功能
getRecord(): void {
this.recordService.getRecords().subscribe((result: any) => {
this.record = result && result[0] || {};
}, (error: any) => {
console.log(error);
});
}
如果result
返回[{"record_id":"101","demographics_spring_complete":"2"}]
,则result [0]将返回{"record_id":"101","demographics_spring_complete":"2"}
,但是如果结果的值不为undefiend
,则将执行{ {1}}处理执行。