Java 修改焊剂类型
我得到了一个通量,它包含以下数据结构Java 修改焊剂类型,java,spring-boot,web-services,proxy,spring-webflux,Java,Spring Boot,Web Services,Proxy,Spring Webflux,我得到了一个通量,它包含以下数据结构 [ { "id": 181, "date": "2020-06-25T14:49:04", "status": "publish", "type": "wprm_collection", "link": "
[
{
"id": 181,
"date": "2020-06-25T14:49:04",
"status": "publish",
"type": "wprm_collection",
"link": "http://35.228.92.155/?post_type=wprm_collection&p=181",
"collection": {
"id": 181,
"name": "Menu-4",
"nbrItems": "3",
"items": {}
}
},
{...},
{...},
{...}
]
下面的代码无法检索子对象并提供新的通量
public Flux<Collection> getWeeklyMenus() {
System.out.println("Calling WP");
Mono<List<CollectionDetail>> collectionDetailList = client.get()
.uri("/wprm_collection")
.retrieve()
.bodyToFlux(CollectionDetail.class).collectList();
List<Collection> collections = new ArrayList();
collectionDetailList.flatMap(items->{
for(CollectionDetail item : items){
Collection collection = item.getCollection();
collections.add(collection);
}
return null;
});
return Mono.just(collections).flatMapMany(Flux::fromIterable);
}
公共流量getWeeklyMenus(){
System.out.println(“调用WP”);
Mono collectionDetailList=client.get()
.uri(“/wprm\u集合”)
.retrieve()
.bodyToFlux(CollectionDetail.class).collectList();
列表集合=新的ArrayList();
collectionDetailList.flatMap(项目->{
对于(集合详细信息项:项){
Collection=item.getCollection();
集合。添加(集合);
}
返回null;
});
返回Mono.just(collections.flatMapMany(Flux::fromIterable);
}
在本例中,如何在不阻塞流的情况下将通量转换为通量?如何不提取调用
collectList()
的列表并直接处理Flux
解决方案:
public Flux<Collection> getWeeklyMenus() {
Flux<CollectionDetail> collectionDetailList = client.get()
.uri("/wprm_collection")
.retrieve()
.bodyToFlux(CollectionDetail.class);
return collectionDetailList
.map(CollectionDetail::getCollection);
}
公共流量getWeeklyMenus(){
Flux collectionDetailList=client.get()
.uri(“/wprm\u集合”)
.retrieve()
.bodyToFlux(收集详情.类别);
返回收集详细信息列表
.map(CollectionDetail::getCollection);
}
是否有其他方法可以检索CollectionDetail以便执行更多操作,比如从采集中删除一些噪声数据并添加其他噪声数据?您可以始终使用链中的
过滤器来删除一些元素。要添加新元素,您可以查看merge
和concat
操作符