首页 > 解决方案 > 从API返回时如何获取JSON Key的值

问题描述

我的 API 将 JSON 对象返回给 Angular 函数

我需要获取该 JSON 中键的值。如果我直接在控制台上打印该值,则没有错误。

我的角度代码:

submit() : void {
    console.log("FORM SUBMITTED")
    console.log(JSON.stringify(this.register.value, undefined, 2));
    this._registerService.register(this.register.value)
    .subscribe(
      data => {
        console.log("DATA : ", JSON.stringify(data, undefined, 2));
        console.log("Status : " + data.status);
        if (data.status == "duplicate") {
          console.log("DUPLICATE");
        } else if (data.status == "success") {
          console.log("SUCCESS");
        }
      },
      error => {
        console.log("ERRORrrr : ", JSON.stringify(error, undefined, 2));
        this._router.navigate(['/500']);
      }
    )
  }

在上面的代码中 console.log("DATA : ", JSON.stringify(data, undefined, 2)); 工作正常。它显示了数据: 在此处输入图像描述

但是如果我尝试在“数据”中获取“状态”的值,

console.log("Status : " + data.status);

它给出了错误:

 error TS2339: Property 'status' does not exist on type 'Object'.

我需要在if语句中使用status的值

请帮助获取 data.status 的值

标签: jsonangular

解决方案


我不知道您使用的是哪个版本的 rxjs,但在当前版本中,您必须使用catchError()捕获 Observables 的错误。

这将是我的解决方案:

  register(body: any): Observable<{status: string, summary: string, details: string}> {
    return this._http.post(
           'localhost:3000/register', body, 
           {observe: 'body'}).pipe(catchError(this.handleError));
  }

也许这会解决你的问题。


推荐阅读