第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用來自 Rest API 的值返回鍵

使用來自 Rest API 的值返回鍵

動漫人物 2022-06-15 10:33:12
我想從 Rest API 端點(diǎn)返回 JSON 作為帶有值的鍵。例子:  {    "terminal 1":       {"date":"2018-10-06T00:00:00.000+0000","volume":111,"count":1},    "terminal 2":       {"date":"2018-11-06T00:00:00.000+0000","volume":122,"count":1}  }如何添加密鑰?我想應(yīng)該是這樣的:List<String<List<TopTerminalsDTO>>>>你能給我一些代碼示例嗎?清理最終代碼的最新嘗試:@GetMapping("/terminals")public ResponseEntity<Map<Integer, List<TopTerminalsDTO>>> getTopTerminalsVolumes(        @RequestParam(value = "start_date", required = true) String start_date,        @RequestParam(value = "end_date", required = true) String end_date) {        LocalDateTime start_datel = LocalDateTime.now(Clock.systemUTC());        LocalDateTime end_datel = LocalDateTime.now(Clock.systemUTC());        final List<PaymentTransactionsDailyFacts> list = dashboardRepository.top_daily_transactions(start_datel, end_datel);        final Collector<PaymentTransactionsDailyFacts, List<TopTerminalsDTO>, List<TopTerminalsDTO>> terminalsCollector =                 Collector.of(                    ArrayList::new,                    (terminals, p) -> terminals.add(mapper.toTopTerminalsDTO(p)),                    (accumulator, terminals) -> {                       accumulator.addAll(terminals);                       return accumulator;                    }                 );        final Map<Integer, List<TopTerminalsDTO>> final_map =                      list.stream()                         .filter(p -> p.getTerminal_id() != null)                         .collect(Collectors.groupingBy(p -> p.getTerminal_id(), terminalsCollector));    return ResponseEntity.ok(final_map);}
查看完整描述

2 回答

?
滄海一幻覺

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個贊

在您的 JSON 之后,testDate()應(yīng)該返回Map<String, TopTerminalsDTO>而不是List.


Map<String, TopTerminalsDTO> result = newHashMap();


for (int i = 0; i <= 10; i++) {


    TopTerminalsDTO ttDto = new TopTerminalsDTO();

    ttDto.setCount(ThreadLocalRandom.current().nextInt(20, 500 + 1));


    LocalDate localDate = LocalDate.now().minus(Period.ofDays((new Random().nextInt(365 * 70))));

    Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());


    ttDto.setDate(date);

    ttDto.setVolume(ThreadLocalRandom.current().nextInt(300, 5000 + 1));


    result.put("terminal "+i, ttDto)

}


return result;

當(dāng)然,將休息方法的響應(yīng)類型更改為ResponseEntity<Map<String, TopTerminalsDTO>>


查看完整回答
反對 回復(fù) 2022-06-15
?
慕仙森

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個贊

這就是 Javascript 的dictionary樣子。

在 Java 中,正確的表示是Map<String, TopTerminalDto>.


假設(shè)您有一個有序列表,并且您想返回一個Map帶有生成的鍵的列表terminal{index}。


final List<TopTerminalDto> list = ...

final Map<String, TopTerminalDto> map = 

         IntStream.range(0, list.size())

                  .boxed()

                  .collect(toMap(i -> "terminal" + i, i -> list.get(i)));

Spring 端點(diǎn)將變?yōu)椋?/p>


@GetMapping("terminals")

Map<String, TopTerminalDto> getTopTerminalVolumes() { ... }

在ResponseEntitySpring 中不是強(qiáng)制性的。


記住盡可能通過Stream(s) 工作,以產(chǎn)生沒有中間臨時狀態(tài)的結(jié)果。


附加示例:


final List<PaymentTransactionsDailyFacts> list = 

            dashboardRepository.top_daily_transactions(start_datel, end_datel);


final Map<String, TopTerminalDto> map =

            list.stream()

                .collect(toMap(p -> p.getTerminal(), this::toDto))


// Conversion method

private TopTerminalDto toDto(final PaymentTransactionsDailyFacts p) {

    // Implement conversion to Dto

}

對于與終端關(guān)聯(lián)的多個值:


final Map<Integer, List<TopTerminalDto>> map = 

             list.stream()

                 .filter(p -> p.getTerminal() != null)

                 .collect(groupingBy(

                     p -> p.getTerminal(),

                     Collector.of(

                            ArrayList::new,

                            (terminals, p) -> terminals.add(toDto(p)),

                            (accumulator, terminals) -> {

                                accumulator.addAll(terminals);

                                return accumulator;

                            }

                     )

             ));

您可以通過提取收集器來清理代碼。


final Collector<Integer, List<TopTerminalDto>, List<TopTerminalDto>> terminalsCollector =

             Collector.of(

                ArrayList::new,

                (terminals, p) -> terminals.add(toDto(p)),

                (accumulator, terminals) -> {

                   accumulator.addAll(terminals);

                   return accumulator;

                }

             )


final Map<Integer, List<TopTerminalDto>> map = 

             list.stream()

                 .filter(p -> p.getTerminal() != null)

                 .collect(groupingBy(p -> p.getTerminal(), terminalsCollector));


查看完整回答
反對 回復(fù) 2022-06-15
  • 2 回答
  • 0 關(guān)注
  • 91 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號