我正在尝试从服务中读取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之间的
答案 0 :(得分:1)
您似乎正在返回undefined
,但您的打字稿中的支票正在检查null
[其中!==
表示 严格不等于
如果您将其更改为!=
,则可能会解决您的问题。如果没有,它肯定不会崩溃,并且正确地按照条件。
如果您遇到JSON解析问题且response
变量是字符串,那么您可以JSON.parse(response)
代替response.json()
来获取您的对象。
根据您的评论,很明显,(<any>response)._body
是一个字符串,可以通过运行typeof (<any>response)._body
来验证。基于此,解决方案只是JSON.parse((<any>response)._body).count
。