json - 从 API 中解析 JSON 字符串

标签 json angular typescript angular5

我有一个 API 返回以下数据:

[
  {
    "id": 1,
    "symbol": "20MICRONS",
    "series": "EQ",
    "isin": "INE144J01027",
    "created_at": "2018-03-05 16:24:10",
    "updated_at": "2018-03-05 16:24:10"
  },
  {
    "id": 2,
    "symbol": "3IINFOTECH",
    "series": "EQ",
    "isin": "INE748C01020",
    "created_at": "2018-03-05 16:24:10",
    "updated_at": "2018-03-05 16:24:10"
  },
  {
    "id": 3,
    "symbol": "63MOONS",
    "series": "EQ",
    "isin": "INE111B01023",
    "created_at": "2018-03-05 16:24:10",
    "updated_at": "2018-03-05 16:24:10"
  },
  {
    "id": 4,
    "symbol": "VARDMNPOLY",
    "series": "EQ",
    "isin": "INE835A01011",
    "created_at": "2018-03-05 16:24:10",
    "updated_at": "2018-03-05 16:24:10"
  }
]   

我希望以 Angular 解析来自 api 的此响应。我能够在控制台中记录数据,但无法映射数据类型。

export class SymbolsComponent implements OnInit {

  allSymbols: Symbols[] = [];

  constructor(private http: HttpClient, private apiUrl: ApiUrlService) { }

  ngOnInit() {
    this.fetchListOfAllSymbol();
  }

  fetchListOfAllSymbol() {
    this.http.get(this.apiUrl.getBaseUrl() + 'symbol').subscribe(data => {
        console.log(data);

    });
  }

} 

我的模型文件如下所示:

export class Symbols {

  constructor(private symbol: string, private series: string, private isin: string, private created: string) {

  }

}

从 API 获得响应后,我需要将结果填充到 allSymbols 变量中。

最佳答案

您的 JSON 对象属性不是 Symbols 的 100% 映射,您必须对其进行转换。

这里是一个例子,接口(interface)ServerSymbols包含了JSON对象的所有属性,现在您可以将fetchListOfAllSymbol()修改为:

fetchListOfAllSymbol() {
    this.http.get<ServerSymbols[]>(this.apiUrl.getBaseUrl() + 'symbol')
      .subscribe((data: ServerSymbols[]) => {
        console.log(data);
        // convert ServerSymbols to Symbols 
      });
}

GET 将返回 ServerSymbols 列表

export interface ServerSymbols {
    id: number;
    symbol: string;
    series: string;
    isin: string;
    created_at: string;
    updated_at: string;
}

将 ServerSymbols 对象转换为 Symbols 对象:

convertFromServer(serverSymbols: ServerSymbols): Symbols {
    return new Symbols(serverSymbols.symbol, serverSymbols.series, serverSymbols.isin, serverSymbols.created_at);
}

关于json - 从 API 中解析 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49156433/

相关文章:

ios - 从 JSON API 中提取特定类型的属性

ios - 从 JSON 获取字典

json - 如何将对象的json转换为字典

javascript - 当 Assets 发生变化时更新 service worker

javascript - 无法创建堆叠条形图?

javascript - Angular 2 类和大型 json 文件

javascript - 提供初始化 json 字符串作为 jquery 方法的参数

angular - 从 observable 的 finalize 方法返回一个 observable

angular - 使用 ActionReducerMap : "not assignable to type ' ActionReducerMap<AppState, Action> 注册 reducer 时出错

angular - 如何在 Ionic 2 中设置单选按钮警报的值