如何在JSON ANGULAR中访问数组?

时间:2017-07-01 15:04:07

标签: arrays json angular typescript ionic-framework

我正在尝试在Angular项目的视图中显示一个数组

Items.json

{
  "tipo": "texto",
  "texto": "Un colegio necesita enviar 5 estudiantes como representantes a un foro sobre la contaminación del medio ambiente. Se decidió que 2 estudiantes sean de grado décimo y 3 de grado undécimo. En décimo hay 5 estudiantes preparados para el foro y en undécimo hay 4. ¿Cuántos grupos diferentes pueden formarse para enviar al foro?",
  "respuestas": [
    "9",
    "14",
    "20",
    "40"
  ]
}

TS:

let timeoutMS = 10000;
this.http.get(assets / Items.json)
    .timeout(timeoutMS)
    .map(res => res.json()).subscribe(data => {
        let responseData = data;

        this.preguntas = responseData;
        console.log(this.preguntas);

    },
    err => {
        console.log(err);
    });

console.log() displays the JSON correctly respuestas是一个数组,所以没关系

In the view  我得到preguntas.texto = "Un colegio necesita enviar 5 estudiantes..."preguntas.respuestas = 9,14,20,40

如果我尝试获取preguntas.respuestas [0]我有这个错误“TypeError:无法读取未定义TypeError的属性'0':无法在Object.eval [作为updateRenderer]读取未定义的属性'0'... “

我做错了什么?

感谢阅读! :d

编辑:

import { Facebook, FacebookLoginResponse } from '@ionic-native/facebook';
import { Component } from '@angular/core';
import { NavController } from 'ionic-angular';
import { LoginPage } from '../login/login';

import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/timeout';

@Component({
  selector: 'page-pregunta',
  templateUrl: 'pregunta.html'
})
export class PreguntaPage {
    userData = null;
    preguntas = {};
constructor(private facebook:Facebook ,  public http: Http) {
  }

ionViewDidLoad() {
    let path = 'assets/Items.json';
    let encodedPath = encodeURI(path);
    let timeoutMS = 10000;

    this.http.get(encodedPath)
    .timeout(timeoutMS)
    .map(res => res.json()).subscribe(data => {
let responseData = data;

this.preguntas = responseData;
    console.log(this.preguntas);
},
err => {
  console.log('error!!', err);
});
}}

1 个答案:

答案 0 :(得分:0)

你应该尝试这样的事情:

let respuestas = []
...
responseData.respuestas.map(item => respuestas.push(item)).

然后尝试这样的事情:

console.log(respuestas[0])