首页 新闻 会员 周边

angular2 里面如何取到json对象的值。

0
[已解决问题] 解决于 2017-05-03 12:03

问题也不好表述,就是我能取到Json数的值,但是json对象取不到。直接上代码:

我有一个类:

export class Hero {
constructor(
public uid:string,
public id: number,
public name: string) { }
}

数据是这样的:

heroes.json:

 {
"uid":1,
"data": [
{ "id": 1, "name": "Windstorm"},
{ "id": 2, "name": "Bombasto"},
{ "id": 3, "name": "Magneta" },
{ "id": 4, "name": "Tornado" }
]
}

然后我有一个方法:

private extractData(res: Response) {
  let body = res.json();
 return body.data;
}

这里就取到"data": [
{ "id": 1, "name": "Windstorm"},
{ "id": 2, "name": "Bombasto"},
{ "id": 3, "name": "Magneta" },
{ "id": 4, "name": "Tornado" }
]

的值。

然后我的html就直接

<li *ngFor="let hero of heroes"> {{hero.name}} </li>
这是对的。
但是我想取到"uid":1,
body.uid是可以输出等于1

但是: {{hero.uid}}的时候什么都没有
怎么样才能取到。难道Json对象不是这样取值?

前端进阶中的主页 前端进阶中 | 菜鸟二级 | 园豆:279
提问于:2017-04-20 12:05
< >
分享
最佳答案
0

你能取到 hero.name的话,那就只能取到 hero.id,肯定取不到hero.uid的啊,

我一个不懂编程的人都看出来了....看出来了....看出来了....

 

你要么return body,而不是return body.data,

不过这样一来, name那儿得写成 hero.data.name

而uid就可以写成 hero.uid了。

 

奖励园豆:5
爱编程的大叔 | 高人七级 |园豆:30839 | 2017-04-20 12:29

这样啥都不显示啦

前端进阶中 | 园豆:279 (菜鸟二级) | 2017-04-20 13:33

@苏黎世宝贝: 这我后面只是举个栗子说明一下的。

办法你得自己想啊,同学。

简单说,你现在的hero里面没有uid这种东西,你让系统变也变不出来。

你要么后台返回打平的json比如这样

heroes.json:

 {
"uid":1,
"data": [
{ "uid":1,"id": 1, "name": "Windstorm"},
{ "uid":1,"id": 2, "name": "Bombasto"},
{ "uid":1,"id": 3, "name": "Magneta" },
{ "uid":1,"id": 4, "name": "Tornado" }
]
}

要么你就得好好学习一下typescript。

学得不好的话,性能差点没关系,反正你首先得完成工作么。

 

这是最差的方法,但是有效...有效...有效...

爱编程的大叔 | 园豆:30839 (高人七级) | 2017-04-20 14:07
其他回答(1)
0

层次不一样啊

json 就跟对象一样

var obj = {
    "uid":1,
    "data": [
        {"id": 1, "name": "Windstorm"},
        {"id": 2, "name": "Bombasto"},
        {"id": 3, "name": "Magneta" },
        {"id": 4, "name": "Tornado" }
    ]
}

data 数组的每个对象里面又没有 uid 这个属性,你怎么可能拿到。uid 不是跟 data 同层么,你只返回 data 不可能有 uid 的。

名字不好起啊 | 园豆:401 (菜鸟二级) | 2017-04-27 15:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册