首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Angular 6-解析JSON

Angular 6-解析JSON
EN

Stack Overflow用户
提问于 2018-08-10 14:41:44
回答 3查看 5.8K关注 0票数 3

我在使用.net核心SPA应用程序时遇到问题。-结果由API调用传回- SPA不处理结果。

下面是相关的代码:

SPA ts:

代码语言:javascript
运行
复制
class TestLibraryItem {
  private _apiPath: string;
  private _http: HttpClient;

  public name: string;
  public testResults: TestResult;

  constructor(name: string, apiPath: string, http: HttpClient) {
    this.name = name;
    this._apiPath = apiPath;
    this._http = http;
  }

  RunTests() {
    this._http.get<TestResult>(this._apiPath)
      .subscribe(result => {
      this.testResults = result;
      console.log(this.testResults);
      console.log(this.testResults.CheckName);
    });
  }
}

class TestResult {
  CheckName: string;
  Checks: CheckResult[];
}

class CheckResult {
  Test: string;
  Pass: boolean;
}

当触发RunTests()时,控制台将产生以下结果:

代码语言:javascript
运行
复制
{"CheckName":"Check One","Checks":[{"Test":"Test one","Pass":true},{"Test":"Test two","Pass":true}]}
undefined

据我所知,我从应用程序接口中得到了有效的json (由console.log将其吐出,但它实际上并没有构建导致未定义的对象。

EN

回答 3

Stack Overflow用户

发布于 2018-08-10 14:49:54

我认为你在JSON中的属性是从大写到小写解析的- CheckName -> checkName。由于Javascript/Typescript是一种区分大小写的语言,因此您需要使用不同的属性名称。

尝试以小写形式登录,并将您的属性名称更改为以小写开头。在Javascript/Typescript中,函数和变量/属性名称以小写字母开头是一个常见的标准。

代码语言:javascript
运行
复制
console.log(this.testResults.checkName);
票数 1
EN

Stack Overflow用户

发布于 2018-08-10 14:56:59

由于此console.log(this.testResults)是首先触发的,因此您的定义不明确

代码语言:javascript
运行
复制
RunTests() {
    this._http.get<TestResult>(this._apiPath)
      .subscribe(result => {
      this.testResults = result;
      console.log(this.testResults);
      console.log(this.testResults.CheckName === undefined ? '' : this.testResults['CheckName']);
    });
  }

或者使用SetTimeOut

代码语言:javascript
运行
复制
 RunTests() {
        this._http.get<TestResult>(this._apiPath)
          .subscribe(result => {
          this.testResults = result;
          console.log(this.testResults);
         setTimeout(()=>{console.log(this.testResults['CheckName'])},2000); 

        });
      }
票数 1
EN

Stack Overflow用户

发布于 2018-08-10 15:06:16

我遇到了一个类似的问题,即它看起来像lika有效的json响应,但实际上它是一个“文本”响应。试一试以下几点:

代码语言:javascript
运行
复制
  getdData(inParams) {
    let headers = new HttpHeaders();
    headers = headers.append('Content-Type', 'application/json');

    // need responseType = text (non object)
    return this.http.get(environment.url, {
      headers,
      responseType: 'text'
    });
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51780485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档