我有多个http请求以获取数据。以前,我得到的JSON回复看起来像这样:
[{"date":"25-04-2019 11:11:23","action":"Created Request","userName":"chaitanya"},{"date":"25-04-2019 11:13:18","action":"Edited Request","userName":"chaitanya"}]
现在JSON响应看起来像这样:
{
"status": "SUCCESS",
"data": "[{"date":"04-06-2019 05:51:33","action":"Created Request","userName":"David Katz"},{"date":"04-06-2019 05:53:43","action":"Edited Request",]",
"errorMsg": null
}
基本上,较早的响应现在是新JSON中"数据"的一部分。
我以前的返回语句看起来像这样:
return this.http.post('https://abc.xzu/fetchData', details)
如何返回新JSON中"数据"的值?我该如何访问?
另外,我还有其他一些使用订阅或透明度的服务。他们会有什么变化?基本上,我不知道如何访问新JSON内的"数据"值。
您可以使用:
.subscribe( (result: any) => {
this.data = result.data
});
您可以按照罗纳德·哈恩(Ronald Haan(所说的(这意味着修改您的订阅(或类似的东西
yourMethod() {
return this.http.post('https://abc.xzu/fetchData', details)
.pipe(
tap(res => handleStatus(res)), // Handle errors without modifying the data
mergeMap(res => res.data),
mergeMap(data => JSON.parse(data)) // If you need to parse the JSON string
);
}
handleStatus(res: {status: string, data: string, errorMsg: string | null}) {
// Do something with 'status' and 'errorMsg'
}
这样,您可以处理新字段而不更改订阅。
您在API返回时是否有回复?就像是:响应。Status.....
这可能是问题。
或尝试添加详细信息.toString
或.Stringefy
url = "api/uddl/zxcc";
getDataWithObservable(): Observable<CLASS[]> {
return this.http.get(this.url)
.map(this.extractData)
.catch(this.handleErrorObservable);
}