如何在java中映射批量请求响应
我们将使用支持bulkGETOperations的第三方RESTAPI服务,在发送请求之前,我们需要为数组中的每个元素分配一个唯一的id(bid),如果成功(200 OK),将返回相同的id作为响应 有人能帮助我根据请求中传递的唯一出价映射响应的方式/最有效的方式吗?映射后,我需要根据特定条件在数据库中存储各个字段。下面是请求JSON示例,以下格式的回复将相同,但将包含每个学校的其他字段如何在java中映射批量请求响应,java,spring,java-8,Java,Spring,Java 8,我们将使用支持bulkGETOperations的第三方RESTAPI服务,在发送请求之前,我们需要为数组中的每个元素分配一个唯一的id(bid),如果成功(200 OK),将返回相同的id作为响应 有人能帮助我根据请求中传递的唯一出价映射响应的方式/最有效的方式吗?映射后,我需要根据特定条件在数据库中存储各个字段。下面是请求JSON示例,以下格式的回复将相同,但将包含每个学校的其他字段 "testList": [ { "schoolId
"testList": [
{
"schoolIdentifier": {
"schoolId": "abc",
"schoolName": {
"name": "ABC"
}
},
"bid": 1
},
{
"schoolIdentifier": {
"schoolId": "bbb",
"schoolName": {
"name": "BCD"
}
},
"bid": 2
}
]
注意:我知道这可以通过Map来完成,但是使用java8寻找有效的解决方案,您可以使用merge来查找和添加响应字段。假设您所在的学校班级包含所有请求和响应字段,并且由bid id映射
static Map<Integer, School> merge(Map<Integer, School> request, Map<Integer, School> response) {
Map<Integer, School> combined = new HashMap<>(request);
response.forEach(
(key, value) -> combined.merge(key, value, (req, resp) -> /** map additional fields from response **/ ));
return combined;
}
静态映射合并(映射请求、映射响应){
Map combined=新的HashMap(请求);
答复:forEach(
(key,value)->combined.merge(key,value,(req,resp)->/**映射响应中的其他字段**/);
综合收益;
}
我假设您收到的响应已经包含了一个School对象中所需的所有内容,并且您只需要高效地将列表响应转换为一个Map(以key作为bid)
您将获得一个列表testList
,其中包含bid和学校对象。您只需将列表转换为地图,如下所示:
Map<Integer, SchoolDto> map = testList.parallelStream().collect(
Collectors.toMap(bidSchoolDto -> bidSchoolDto.getBid()
, bidSchoolDto -> bidSchoolDto.getSchool()));
Map Map=testList.parallelStream().collect(
Collectors.toMap(bidSchoolDto->bidSchoolDto.getBid()
,bidSchoolDto->bidSchoolDto.getSchool());
您尝试过什么?你衡量过不同技术的表现吗?你是从地图开始还是在缓存中?嗨,我尝试过地图,但是我在寻找java 8流解决方案,如果请求的有效载荷不能改变,考虑使用下面的代码>类BulkReave{{清单};}<代码> >代码>类学校出价{学校;int投标;}<代码>然后在收到请求后,创建一个Map perbidschool请求
(可以使用groupingBy
和映射
)。在此之前,您需要迭代此映射的条目,并将请求转换为每个键的响应。
Map<Integer, SchoolDto> map = testList.parallelStream().collect(
Collectors.toMap(bidSchoolDto -> bidSchoolDto.getBid()
, bidSchoolDto -> bidSchoolDto.getSchool()));