【问题标题】:How to map bulk request response in java如何在java中映射批量请求响应
【发布时间】:2020-08-28 18:58:35
【问题描述】:

我们将使用支持 bulkGETOperations 的第三方 REST API 服务,在我们发送请求之前,我们需要为数组中的每个元素分配一个唯一的 id(bid),如果成功(200好的)。

有人可以帮助我根据请求中传递的唯一出价映射响应的方式/最有效的方式,映射后我需要根据特定条件将各个字段存储在数据库中。下面是示例请求 JSON ,响应将与以下格式相同,但每个学校将包含其他字段

"testList": [
      {
        "schoolIdentifier": {
          "schoolId": "abc",
          "schoolName": {
            
            "name": "ABC"
          }
         },
        "bid": 1
        
      },
      {
        "schoolIdentifier": {
          "schoolId": "bbb",
          "schoolName": {
            
            "name": "BCD"
          }
         },
        "bid": 2
        
      }
    ]

注意:我知道这可以通过 Map 来完成,但正在寻找使用 java 8 的有效解决方案

【问题讨论】:

  • 你试过什么?您是否测量了不同技术的性能?你是从地图还是缓存开始的?
  • 您好,尝试过 Map 但正在寻找 java 8 流解决方案
  • 如果请求负载不能改变,考虑使用下面的class BulkRequest { List<SchoolBid> schoolBids;}class SchoolBid { School school; int bid;},然后在收到请求时创建一个Map<Integer, School> perBidSchoolRequest(这可以使用groupingBymapping来完成)。在此之前,您需要遍历此 Map 的条目,并将请求转换为每个键的响应。

标签: java spring java-8


【解决方案1】:

您可以使用合并来查找和添加响应字段。假设您有一个包含所有请求和响应字段的 School 课程,并通过投标 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;
}

【讨论】:

    【解决方案2】:
    'response will be same in below format but will contain additional fields per school'
    

    我想您收到的响应已经包含了您在 School 对象中需要的所有内容,并且您只需将列表响应有效地转换为 Map(以键作为出价)

    您将获得一个列表testList,其中包含投标和学校对象。您可以简单地将列表转换为地图,例如:

     Map<Integer, SchoolDto> map = testList.parallelStream().collect(
                Collectors.toMap(bidSchoolDto -> bidSchoolDto.getBid()
                        , bidSchoolDto -> bidSchoolDto.getSchool()));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-19
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      • 2014-04-14
      • 2017-01-18
      • 2018-11-12
      • 1970-01-01
      相关资源
      最近更新 更多