如何在 RxJS 中处理这个 json 响应?
Posted
技术标签:
【中文标题】如何在 RxJS 中处理这个 json 响应?【英文标题】:How to process this json-response in RxJS? 【发布时间】:2017-02-14 21:14:56 【问题描述】:我有 angular2 应用程序(TypeScript),它使用 RxJS 来处理 json-request(我知道 angular 的服务,我只是简化了代码)。
此代码在类方法中:
this.http.post(url, body, options)
.map(
response => response.json()
)
.subscribe(result =>
persons => this.persons = persons
);
在课堂上我有字段persons
,我希望这个字段应该从响应中获取数据,以便在*ngFor
中使用这个persons
我还有 java-backend,它会产生这样的响应(在 map()
中添加 console.log()
后,我得到了这个输出):
message:"["personId":"29d5a903-b664-4fc3-9bd9-0836f1b3dc58","email":"test@example.com","firstname":"Test","lastname":"Testoff","username":"oooo","birthdate":"2000-05-28","gender":"male","password":"xxxxx","active":null,"profiles":[]]"
我做错了什么? (我是后台,抱歉,可能是愚蠢的问题)
【问题讨论】:
什么是response.json()
?你确定它返回一个字符串吗? result => persons => this.persons = persons
--- 这在语法上看起来也不正确。
我已经修复了代码,这是为了调试来定义什么是错误的对不起。 “语法正确” - TypeScript 认为没问题,也请检查这里plnkr.co/edit/r1QFQj0wZ5hgJxrsRoGF?p=preview
typescriptlang.org/play --- 试试const foo = () => foo => 2; ;
看看它会翻译成什么。它将其转换为未调用的匿名函数,因此它是无操作的。 PS:是的,它语法上是正确的,我的错,仍然 - 逻辑上它是错误的。
我不明白什么不起作用...
【参考方案1】:
我看到你修复了代码并且它正在工作。我想概述一个更符合 angular2 理念的不同解决方案,不要在您的应用中保存局部变量,直接使用服务的序列:
<my-person
*ngFor="let person; of peopleService.people | async;"
[name]="person.name"
(hello)="saidHello($event)">
</my-person>
【讨论】:
以上是关于如何在 RxJS 中处理这个 json 响应?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 jsonDecoder 处理来自 JSON 响应的动态键?
如何在 Angular 和 RxJs 中管理多个顺序订阅方法?