在angular2中解析json

时间:2017-03-03 20:32:47

标签: json angular typescript

我正在尝试从服务中读取angular2应用程序中的用户数。 我们有一个招摇从服务生成存根。

我的存根(gpMapApi):

 public findMapByIdsUsingGET(oId?: number, id?: number, extraHttpRequestParams?: any): Observable<string> {
        return this.findMapByIdsUsingGET(oId, id, extraHttpRequestParams)
            .map((response: Response) => {
                if (response.status === 204) {
                    return undefined;
                } else {
                    return response.json();
                }
            });
    }

我的Json回复:

{"count" : 0}

我的打字稿

public checkUserExist(oId,Id) {
       this.gpMapApi.findMapByIdsUsingGET(oId,id)
             .subscribe(response => {
                  if ((<any>response) !== null && (<any>response)['_body'] !== null && (<any>response)['_body']['count'] !== null) {
                this.iCount = (<any>response)['_body']['count'];
        });      
    }

但我得到的错误是“计数”未定义。 来自Chrome的错误消息

"Cannot read property 'count' of undefined"

如何阅读json响应。

解 用过的  JSON.parse((响应)._体).Count之间的

1 个答案:

答案 0 :(得分:1)

您似乎正在返回undefined,但您的打字稿中的支票正在检查null [其中!==表示 严格不等于

如果您将其更改为!=,则可能会解决您的问题。如果没有,它肯定不会崩溃,并且正确地按照条件

编辑:

如果您遇到JSON解析问题且response变量是字符串,那么您可以JSON.parse(response)代替response.json()来获取您的对象。

编辑最终:

根据您的评论,很明显,(<any>response)._body是一个字符串,可以通过运行typeof (<any>response)._body来验证。基于此,解决方案只是JSON.parse((<any>response)._body).count