在Angular 4中阅读JSON

时间:2017-10-19 19:49:08

标签: javascript json angular

我从Angular 4中的Web服务收到以下JSON数据:

    {
        "NewDataSet": {
            "Table": [
                {
                    "DataPointID": [
                        "6520"
                    ]
               }
           ]
       }
    }

我已经验证它是有效的JSON数据,但是当我尝试返回时,我没有得到该值。我以字符串形式收到它,然后使用JSON.Stringfy(obj,null,'\t')

将其转换为JSON

obj.NewDataSet.Table[0].DataPointID抛出

  

错误类型错误:无法读取未定义的属性“表”。

我在w3School上用html尝试了这个,但它似乎在那里工作。有什么问题?

2 个答案:

答案 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(); ...