我开始使用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)))
但是如何映射更复杂的响应,如嵌套对象和嵌套数组?
答案 0 :(得分: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(....)
}
Observables不关心它们发出的东西,因此简单的字符串或复杂的嵌套对象之间的差别不大。如果您知道如何处理基本类型,object
和/或array
响应,那么您几乎了解所有内容(;