如何更改RxJS中可存储的数据?

时间:2017-02-08 19:26:52

标签: angular rxjs observable

我在Angular 2应用程序中编写了一个方法,在进行返回JSON的服务器调用之后创建并返回类的Observable。但是,JSON的格式很差,因此我需要一个快速修复程序来编辑返回的JSON,然后再将其发送到.json()方法,该方法由于格式不正确的JSON而导致错误。

具体来说,我需要在数组的右括号后面的JSON中找到一个错误的逗号,并将其删除。

我的问题

Observable.map函数应该是什么完全?如何查找和操作实际的JSON字符串,然后将其发送?我对所有这一切都不熟悉,所以我们将不胜感激。

getList(): Observable<Thing[]> {
  let response = this.http.get('/api/get-things');
  let fixed = response.map(____WHAT GOES HERE?_____);
  return fixed.map((r: Response) =>r.json as Thing[]);
}

1 个答案:

答案 0 :(得分:2)

假设你有一个fix方法:

const fix = (json: string) => {
  // ...
}

你可以这样做:

const things: Observable<Thing[]> = this.http.get('/api/get-things')
  .map(response => response.text())
  .map(fix)
  .map(fixedJson => JSON.parse(fixedJson) as Thing[])

然而,这是一个非常糟糕的主意修复服务器端代码!