首页 文章

在angular2中解析json

提问于
浏览
-1

我试图从服务中读取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((response)._ body).count

1 回答

  • 1

    看来你正在返回 undefined ,但你的打字稿中的支票正在检查 null [其中 !== 表示 strictly 不相等]

    如果您将其更改为 != ,这应该可以解决您的问题 . 如果没有,它肯定不会崩溃,并正确地遵循你的if条件 .

    编辑:

    如果您遇到JSON解析问题并且 response 变量是一个字符串,那么您可以 JSON.parse(response) 而不是 response.json() 来获取您的Object .

    编辑决赛:

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

相关问题