如何在Angular中从没有数据模型的服务访问Json数据

时间:2017-05-10 16:11:47

标签: angular

我有这个嵌套的json,我从我的服务电话获取

{
    "id": "7979d0c78074638bbdf739ffdf285c7e1c74a691",
    "seatbid": [{
        "bid": [{
            "id": "C1X1486125445685",
            "impid": "12345",
            "price": 0,
            "adm": {
                "native": {
                    "link": {
                        "url": "http: //i.am.a/URL"
                    },
                    "assets": [{
                        "id": "001",
                        "required": 1,
                        "title": {
                            "text": "Learn about this awesome thing"
                        }
                    }],
                    "imptrackers": ["https://trks.c1exchange.com/trk/c?pid=123&et=i&profileid=123&siteid=12345&adslot=AUM&adsize=300x250&imprtype=IMAGE&cpm=0.0&dspcid=834&rndid=368997882&adomain=[c1exchange.com]&urid=8787893965303118897&uimprid=2063341746607836879&urespid=0"]
                }
            },
            "adomain": ["c1exchange.com"],
            "cid": "834"
        }]
    }],
    "cur": "USD"
}{
    "id": "7979d0c78074638bbdf739ffdf285c7e1c74a691",
    "seatbid": [{
        "bid": [{
            "id": "C1X1486125445685",
            "impid": "12345",
            "price": 0,
            "adm": {
                "native": {
                    "link": {
                        "url": "http: //i.am.a/URL"
                    },
                    "assets": [{
                        "id": "001",
                        "required": 1,
                        "title": {
                            "text": "Learn about this awesome thing"
                        }
                    }],
                    "imptrackers": ["https://trks.c1exchange.com/trk/c?pid=123&et=i&profileid=123&siteid=12345&adslot=AUM&adsize=300x250&imprtype=IMAGE&cpm=0.0&dspcid=834&rndid=368997882&adomain=[c1exchange.com]&urid=8787893965303118897&uimprid=2063341746607836879&urespid=0"]
                }
            },
            "adomain": ["c1exchange.com"],
            "cid": "834"
        }]
    }],
    "cur": "USD"
}

问题是我想在我的组件中使用它而没有相同的数据模型

目前在我的组件中

 ngOnInit() {

    this.weatherService.getPocData().subscribe( res =>  {
      this.openRtbResponse = res.openRtbResponse;

    });

  }

并在我的模板中

 {{openRtbResponse | json}}

我可以访问它。

但是现在当我想要像这样访问嵌套值时,它会给出未定义的类似

this.openRtbResponse.seatbid[0].bid[0].adm.native.assets[0].id 

它抛出错误。

没有数据模型我不能使用json值

2 个答案:

答案 0 :(得分:0)

Typescript是Javascript的超集,所以任何未明确输入的都是any类型 - 这实际上意味着它是你的“传统”Javascript对象。

您应该能够在没有支持类型的情况下访问这些属性。我猜你是在试图过早访问它或者路径错误,这会给你错误。

直接回答您的问题:是的,您应该可以访问该问题。

答案 1 :(得分:0)

您必须像这样在请求响应上调用.json()才能拥有JSON对象:

function getPocData() {
    return http.get('friends.json')
               .map(response => response.json());
}

请务必在getPocData()的{​​{1}}功能中进行。