如何返回Angular中JSON响应的单个属性



我有多个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);
    }

最新更新