在角度2中将JSON数组转换为服务中的JSON对象

时间:2018-07-02 16:28:09

标签: json angular typescript

我有一个通过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对象。任何帮助,将不胜感激。

3 个答案:

答案 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}}处理执行。