Ionic 2 - 将HTTP GET JSON Response转换为项目数组

时间:2017-03-27 20:34:52

标签: json angular ionic-framework ionic2

我正在开发一个应用程序,并且很难在提供程序中使用对Eventbrite的API调用,解析它返回的JSON,并将我想要的数据插入到数组中。

这是我的提供者(event-provider.ts):

import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import {NativeStorage} from "ionic-native";
import 'rxjs/add/operator/map';

/*
  Generated class for the EventProvider provider.

  See https://angular.io/docs/ts/latest/guide/dependency-injection.html
  for more info on providers and Angular 2 DI.
*/
@Injectable()
export class EventProvider {

  constructor(public http: Http) {
    console.log("Event Provider")
  }
  public getJsonData(){


    return this.http.get('https://www.eventbriteapi.com/v3/events/search/?location.address=Atlanta&expand=organizer,venue&token=VMGQGYQUIO3IKNS75BD4').map(res => res.json().events);

  }
    //console.log('Hello EventProvider Provider');
}

这是我最终将列出数据的事件页面(events.ts):

import { Component } from '@angular/core';
import {EventProvider} from '../../providers/event-provider';
import { NavController } from 'ionic-angular';

@Component({
  selector: 'event-list',
  templateUrl: 'events.html',
  providers: [EventProvider]
})
export class EventsPage {
  events = []


  constructor(public navCtrl: NavController, private eventProvider: EventProvider) {

    this.events = eventProvider.getJsonData();

  }

}

对于上述.ts文件,我在this.events = eventProvider.getJsonData();收到错误消息。错误说: Type' Observable'不能分配给任何[]'类型。物业'找到'类型' Observable' 中缺少。我真的不明白这个错误。

这就是JSON响应的样子:EventBrite

基本上,我想将每个事件作为项添加到数组中。 JSON响应包含大约500个事件。

我现在只是坚持不确定是否在正确的轨道上。调试我的代码很困难,因为它正在iOS模拟器中进行测试,因此console.log()无法正常工作。有关如何实现从JSON响应创建事件数组的目标的任何提示吗?

2 个答案:

答案 0 :(得分:2)

您需要subscribe来观察,以便提出请求。

this.events = eventProvider.getJsonData();

应该是这样的:

eventProvider.getJsonData().subscribe((res)=>{
  this.events = res.events;
});

答案 1 :(得分:0)

而且你还需要返回那个json并假设你总是在响应中有事件属性:

.slice()