如何在Rxjs中映射深层嵌套的对象

Cur*_*Fro 0 rxjs angular

我开始使用angular2中的rxjs.在将http响应映射到observable时,我见过的许多例子都使用了简单的对象.

 this.http.get('/app/shared/data/raw-tasks.json')
        .map(response => response.json())
        .map(stream => stream.map(res => new TaskModel(res.name, res.deadline, res.timeRequired)))
Run Code Online (Sandbox Code Playgroud)

但是我如何映射更复杂的响应,如嵌套对象和嵌套数组?

Sas*_*sxa 6

一旦你从响应中获得了json,你可以随心所欲地使用它.只需添加另一个map函数并将其解析到其他位置(确保返回已解析的值):

 this.http.get('/app/shared/data/raw-tasks.json')
   .map(response => response.json())
   .map(stream => complicatedParser(stream))

 // somewhere in your code...
 complicatedPatser(stream) {
    return stream
      .map(x => x)
      .filter(x => true)
      .reduce(....)
 }
Run Code Online (Sandbox Code Playgroud)

Observable并不关心它们发出的是什么,因此简单的字符串或复杂的嵌套对象之间几乎没有区别.如果您知道如何处理基本类型object和/或array响应,您几乎知道所有事情(;