我从Angular 4中的Web服务收到以下JSON数据:
{
"NewDataSet": {
"Table": [
{
"DataPointID": [
"6520"
]
}
]
}
}
我已经验证它是有效的JSON数据,但是当我尝试返回时,我没有得到该值。我以字符串形式收到它,然后使用JSON.Stringfy(obj,null,'\t')
obj.NewDataSet.Table[0].DataPointID
抛出
错误类型错误:无法读取未定义的属性“表”。
我在w3School上用html尝试了这个,但它似乎在那里工作。有什么问题?
答案 0 :(得分:0)
当你得到对象时,你应该把它读作
this.http.get(ServiceUrls.employees.detail(this.operations.userID)).subscribe(
detail => this.RequestSuccess(detail.json()), (error: Response) => this.RequestError(error.json())
);
注意有一个detail.json()所以在你的函数中你不必做任何其他事情。
答案 1 :(得分:0)
您应该创建一个接口,并且知道它必须返回接口类型中的值。因此,您的代码可能如下所示:
export interface ThisGetInterfaceResponse {
"NewDataSet": NewDataSetModel
}
export class NewDataSetModel {
"Table": Table[]
}
export class Table {
constructor(
"DataPointID": number[]
) {}
}
假设您的http服务是组件中注入的HttpClient实例:
this.httpService.get<ThisGetInterfaceResponse>(url).subscribe((res: ThisGetInterfaceResponse) => {
console.log(res.NewDataSet.Table);
})
还要注意.subscribe()
,因为如果您多次订阅观察者,它将多次请求资源。
例如:
let observable = this.httpService.get<ResponseInterface>(url);
observable.subscribe();
observable.subscribe();
...