2016-02-22 19 views
0

我开始使用angular2中的rxjs。很多我见过的例子在将http响应映射到observable时使用了简单的对象。如何在Rxjs中映射深度嵌套对象

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))) 

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

回答

5

一旦你从响应中得到json,你可以用它做任何你想做的事情。只需添加其他地图功能和解析它在其他地方(请确保您解析返回值):

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(....) 
} 

观测量不在乎它们发出的东西,所以有简单的字符串或复杂的嵌套对象之间的差别不大。如果你知道如何处理基本类型,object和/或array响应,你几乎知道所有的东西(;