springboot接口参数为List的问题
简单接口参数
springboot接口访问,如果是走http请求,那么参数会默认转换成键值对格式,或者是json字符串形式的。

今天就遇到一个场景,我需要一个list结构的参数,list里面又是对象,那我们该怎么传参呢?
我们不能再浏览器上直接拼接参数发请求了,例如:

这样的格式是不被允许的,请求会报错。
那么我们转换思路,既然是json格式的参数,那我们就传json格式
设置headers
Content-type 的值为application/json

组织传值参数list数据
在body中,传值参数,list 使用[]括起来

代码实现请求
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("请求参数:"+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("结果:"+res);
} catch (RestClientException e) {
log.error("请求异常" + e.getMessage());
}
}
controller层设置两个注解@ResponseBody 和@RequestBody
@ResponseBody 没有该注解的时候,会发生postman 请求找不到error 404;
@RequestBody 没有该注解的时候,会发生参数值传输不过去;

这样我们就可以实现通过接口直接传递list对象数据。
其中,list中的对象,我们在传参数时只要组织的json格式的数据中,包含该对象的属性以及对应值,接口参数的对象就可以接收到该属性值。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
详解Java中的println输入和toString方法的重写问题
这篇文章主要介绍了Java中的println输入和toString方法的重写,一个对象数组在调用Arrays.toString打印时,相当于遍历数组,然后打印里边每个对象,这再打印对象就调用对象自己的toString了,需要的朋友可以参考下2022-04-04
Spring AI + 混元带你实现企业级稳定可部署的AI业务智能体
我们深入探讨了Spring AI在智能体构建中的实际应用,特别是在企业环境中的价值与效能,通过逐步实现一个本地部署的智能体解决方案,我们不仅展示了Spring AI的灵活性与易用性,还强调了它在推动AI技术与业务深度融合方面的潜力,感兴趣的朋友一起看看吧2024-11-11
javax.xml.bind.JAXBContext操作XML的实现示例
JAXB是Java标准API,用于Java对象与XML的相互转换,通过注解定义映射规则,本文就来详细的介绍一下javax.xml.bind.JAXBContext操作XML的实现,感兴趣的可以了解一下2025-12-12


最新评论