我试图从服务中读取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 回答
看来你正在返回
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
.