我有一个HTTP请求来获取表的详细信息。之前,响应是一个看起来像这样的JSON:
{"TotalRejectedRequests":0,"TotalDrafts":41,"RequestsPendingApproval":6,"TotalApprovedRequests":13}
对于这种类型的响应,我正在返回如下数据:
return this.http.post<Snapshot>('https://xyz.abc/fetchData', details);
其中Snapshot是响应映射到的接口的名称。
现在我从HTTP请求获得的响应已更改为:
{
"status": "SUCCESS",
"data": {
"TotalRejectedRequests": 0,
"TotalDrafts": 2,
"RequestsPendingApproval": 0,
"TotalApprovedRequests": 1
},
"errorMsg": null
}
现在如何在映射到我已有的Snapshot接口的此响应JSON中仅返回“数据”的值?
编辑:Igor的答案解决了上一个问题,但是我现在有2个不同的问题。 1.如果我没有将响应映射到的界面怎么办?我还有另一个服务,我只是返回整个JSON而没有将其映射到接口?现在,我只想返回上面显示的JSON的数据值?我该怎么办?
答案 0 :(得分:1)
使用地图将map的数据发送到预期的响应。
return this.http.post<{data: Snapshot}>('https://xyz.abc/fetchData', details)
.pipe(map(_ => _.data));
别忘了导入map
import {map} from 'rxjs/operators';
答案 1 :(得分:1)
使用rxjs映射运算符解包数据
import { map } from 'rxjs/operators';
...
return this.http.post<Snapshot>('https://xyz.abc/fetchData', details).pipe(
map(({ data }) => data)
);
您还可以使用rxjs运算符做更多的事情,看看他们的documentation