我在一個spring專案中作業并使用restemplate呼叫POST API,該API采用DTOOne串列并回傳DTOTWO串列。
這是我的代碼:
List<MYDTOONE> listDTORequest;
//values..
ResponseEntity<List<MYDTOOTWO>> userActionsResponse = restTemplate.postForEntity("my yrl",
listDTORequest, MYDTOOTWO.class);
我在最后一個引數中遇到語法錯誤我需要知道如何告訴 postForEntity 我正在等待串列。
我也在最后一個引數中嘗試過List<MYDTOOTWO>,但仍然有語法錯誤
提前致謝。
uj5u.com熱心網友回復:
它可能不是最干凈的代碼,但它是我發現的最快和最簡單的方法。您將其作為陣列讀取,然后將其放入串列中。
List<MYDTOONE> listDTORequest;
// JDK8
List<MYDTOOTWO> userActionsResponse = Arrays.asList(restTemplate.postForEntity("my url", listDTORequest, MYDTOOTWO[].class).getBody());
// JDK9
List<MYDTOOTWO> userActionsResponse = List.of(restTemplate.postForEntity("my url", listDTORequest, MYDTOOTWO[].class).getBody());
uj5u.com熱心網友回復:
您可以嘗試使用以下new ParameterizedTypeReference<List< MyDtoTwo>>() {}方法代替 MYDTOOTWO.class(MyDtoTwo 為便于閱讀而撰寫)的exchange方法(更新:postForEntity 已洗掉 parameterizedTypeReference)。
在您的情況下發生的情況是您回傳的回應被決議為 MYDTOOTWO.class 但是您試圖將結果解釋為串列,從而導致不匹配。使用引數化型別參考,您可以指定您需要一個 MYDTOOTWO.class 串列。
你的電話應該是:
ResponseEntity<List<MYDTOOTWO>> userActionsResponse = exchange("my yrl", HttpMethod.POST,
listDTORequest, new ParameterizedTypeReference<List< MYDTOOTWO>>() {});
List<MYDTOTWO> body = userActionsResponse.getBody();
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/477143.html
上一篇:當來自另一個事務的延遲加載的Hibernate物件被傳遞給方法時,Spring@Transactional不起作用
