springboot接口參數(shù)為L(zhǎng)ist的問題
簡(jiǎn)單接口參數(shù)
springboot接口訪問,如果是走h(yuǎn)ttp請(qǐng)求,那么參數(shù)會(huì)默認(rèn)轉(zhuǎn)換成鍵值對(duì)格式,或者是json字符串形式的。

今天就遇到一個(gè)場(chǎng)景,我需要一個(gè)list結(jié)構(gòu)的參數(shù),list里面又是對(duì)象,那我們?cè)撛趺磦鲄⒛兀?/p>
我們不能再瀏覽器上直接拼接參數(shù)發(fā)請(qǐng)求了,例如:

這樣的格式是不被允許的,請(qǐng)求會(huì)報(bào)錯(cuò)。
那么我們轉(zhuǎn)換思路,既然是json格式的參數(shù),那我們就傳json格式
設(shè)置headers
Content-type 的值為application/json

組織傳值參數(shù)list數(shù)據(jù)
在body中,傳值參數(shù),list 使用[]括起來

代碼實(shí)現(xiàn)請(qǐng)求
public void queryLiveCourseInfoTest(){
JSONArray jsonArray = new JSONArray();
JSONObject json1 = new JSONObject();
json1.put("dn","123");
json1.put("bossCode","34455");
jsonArray.add(json1);
JSONObject json2 = new JSONObject();
json2.put("dn","234");
json2.put("bossCode","66666");
jsonArray.add(json2);
String arr = jsonArray.toJSONString();
System.out.println("請(qǐng)求參數(shù):"+arr);
String url = nativUrl+"";
try {
HttpHeaders headers = new HttpHeaders();
MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
headers.setContentType(type);
HttpEntity<ElecMeterDataApi> entity = new HttpEntity<ElecMeterDataApi>(arr,headers);
String res = restTemplate.postForObject(url, entity, String.class);
log.info("結(jié)果:"+res);
} catch (RestClientException e) {
log.error("請(qǐng)求異常" + e.getMessage());
}
}
controller層設(shè)置兩個(gè)注解@ResponseBody 和@RequestBody
@ResponseBody 沒有該注解的時(shí)候,會(huì)發(fā)生postman 請(qǐng)求找不到error 404;
@RequestBody 沒有該注解的時(shí)候,會(huì)發(fā)生參數(shù)值傳輸不過去;

這樣我們就可以實(shí)現(xiàn)通過接口直接傳遞list對(duì)象數(shù)據(jù)。
其中,list中的對(duì)象,我們?cè)趥鲄?shù)時(shí)只要組織的json格式的數(shù)據(jù)中,包含該對(duì)象的屬性以及對(duì)應(yīng)值,接口參數(shù)的對(duì)象就可以接收到該屬性值。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解Java中的println輸入和toString方法的重寫問題
這篇文章主要介紹了Java中的println輸入和toString方法的重寫,一個(gè)對(duì)象數(shù)組在調(diào)用Arrays.toString打印時(shí),相當(dāng)于遍歷數(shù)組,然后打印里邊每個(gè)對(duì)象,這再打印對(duì)象就調(diào)用對(duì)象自己的toString了,需要的朋友可以參考下2022-04-04
Spring?AI?+?混元帶你實(shí)現(xiàn)企業(yè)級(jí)穩(wěn)定可部署的AI業(yè)務(wù)智能體
我們深入探討了Spring?AI在智能體構(gòu)建中的實(shí)際應(yīng)用,特別是在企業(yè)環(huán)境中的價(jià)值與效能,通過逐步實(shí)現(xiàn)一個(gè)本地部署的智能體解決方案,我們不僅展示了Spring?AI的靈活性與易用性,還強(qiáng)調(diào)了它在推動(dòng)AI技術(shù)與業(yè)務(wù)深度融合方面的潛力,感興趣的朋友一起看看吧2024-11-11
SSH框架網(wǎng)上商城項(xiàng)目第5戰(zhàn)之商品類別級(jí)聯(lián)查詢和分頁功能
SSH框架網(wǎng)上商城項(xiàng)目第5戰(zhàn)之商品類別級(jí)聯(lián)查詢和分頁功能,寫一下CategoryServiceImpl實(shí)現(xiàn)類,完成數(shù)據(jù)庫的級(jí)聯(lián)查詢,感興趣的小伙伴們可以參考一下2016-05-05
Java代碼規(guī)范與質(zhì)量檢測(cè)插件SonarLint的使用
本文主要介紹了Java代碼規(guī)范與質(zhì)量檢測(cè)插件SonarLint的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
javax.xml.bind.JAXBContext操作XML的實(shí)現(xiàn)示例
JAXB是Java標(biāo)準(zhǔn)API,用于Java對(duì)象與XML的相互轉(zhuǎn)換,通過注解定義映射規(guī)則,本文就來詳細(xì)的介紹一下javax.xml.bind.JAXBContext操作XML的實(shí)現(xiàn),感興趣的可以了解一下2025-12-12
spring boot基于DRUID實(shí)現(xiàn)數(shù)據(jù)源監(jiān)控過程解析
這篇文章主要介紹了spring boot基于DRUID實(shí)現(xiàn)數(shù)據(jù)源監(jiān)控過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12

