代码之家  ›  专栏  ›  技术社区  ›  GoGo

将JSON数组转换为Angular2中正在使用的JSON对象+

  •  0
  • GoGo  · 技术社区  · 6 年前

    我有一个在API中获取结果的服务。API以JSON数组的形式返回结果。但我需要结果作为JSON对象。

    API返回:

    [{"record_id":"101","demographics_spring_complete":"2"}]
    

    我需要作为对象格式:

    {"record_id":"101","demographics_spring_complete":"2"}
    

    我的服务:

    getStatus() {
        return this.http.post(this.baseUrl).map(res => res.json())
            .catch(this.handleError);
    }
    

    我的同伴们:

    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 回复  |  直到 6 年前
        1
  •  1
  •   Sajeetharan    6 年前

    似乎您需要数组的第一个对象,使用数组[index]如下,

    loadStatus() {
        this.recordService.getStatus('demographic_spring', 'baseline_visit_a_arm_1', 101).subscribe(statuses => {
         this.statuses = statuses;
         console.log(this.statuses[0]);
       });
    }
    
        2
  •  1
  •   Sachila Ranawaka    6 年前

    添加一个 do 并返回第一个元素。

    getStatus() {
        return this.http.post(this.baseUrl).map(res => res.json())
            .do(res => res[0])
            .catch(this.handleError);
    }
    
        3
  •  0
  •   Tariqul Islam    6 年前

    创建模型类(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"}] ,结果[0]将返回 {"record_id":"101","demographics_spring_complete":"2"} ,但如果结果没有值 undefiend 执行将发生,我们将使用 this.record = result && result[0] || {}; 处理执行。