问题也不好表述,就是我能取到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对象不是这样取值?
你能取到 hero.name的话,那就只能取到 hero.id,肯定取不到hero.uid的啊,
我一个不懂编程的人都看出来了....看出来了....看出来了....
你要么return body,而不是return body.data,
不过这样一来, name那儿得写成 hero.data.name
而uid就可以写成 hero.uid了。
这样啥都不显示啦
@苏黎世宝贝: 这我后面只是举个栗子说明一下的。
办法你得自己想啊,同学。
简单说,你现在的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。
学得不好的话,性能差点没关系,反正你首先得完成工作么。
这是最差的方法,但是有效...有效...有效...
层次不一样啊
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 的。