如何用Angular的$http通过GET请求向Java Spring传递对象数组
嗨,我来帮你搞定把前端的MyObjects数组传到服务器端List的问题,分前端发送和后端接收两部分给你讲清楚:
前端发送数组数据
首先得确保你的MyObjects数组能正常序列化为JSON(别包含循环引用这类问题),然后通过POST请求把数据发出去,这里给你两种常用的实现方式:
用原生Fetch API
// 假设这是你的MyObjects数组 const myObjectsArray = [{ id: 1, name: "Obj1" }, { id: 2, name: "Obj2" }]; fetch('/api/receive-objects', { method: 'POST', headers: { 'Content-Type': 'application/json', // 必须指定这个类型,后端才能正确解析 }, body: JSON.stringify(myObjectsArray), // 把数组转成JSON字符串 }) .then(response => response.json()) .then(data => console.log('数据发送成功:', data)) .catch(error => console.error('发送失败:', error));
用Axios(更省心的库)
如果你项目里用了Axios,代码会更简洁,它会自动帮你处理JSON序列化和请求头:
import axios from 'axios'; const myObjectsArray = [{ id: 1, name: "Obj1" }, { id: 2, name: "Obj2" }]; axios.post('/api/receive-objects', myObjectsArray) .then(res => console.log('数据发送成功:', res.data)) .catch(err => console.error('发送失败:', err));
后端接收List的处理
这里给你两种最常用的后端技术栈的实现方式,你可以对应自己的项目来用:
ASP.NET Core(C#)
第一步先定义和前端MyObjects结构完全匹配的模型类:
public class MyObject { // 属性名要和前端对象的属性名对应,大小写敏感,要是前端用小驼峰,你可以加JsonPropertyName注解映射 public int Id { get; set; } public string Name { get; set; } // 其他和前端对应的属性... }
然后在控制器里写接收的接口:
[ApiController] [Route("api")] public class ObjectController : ControllerBase { [HttpPost("receive-objects")] public IActionResult ReceiveObjects([FromBody] List<MyObject> myObjectsList) { if (myObjectsList == null || !myObjectsList.Any()) { return BadRequest("没有接收到任何数据"); } // 这里就可以直接用myObjectsList做业务处理了 return Ok($"成功接收{myObjectsList.Count}个对象"); } }
Spring Boot(Java)
同样先定义对应实体类:
public class MyObject { private Integer id; private String name; // 记得给所有属性加getter和setter方法,不然Spring没法绑定数据 public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
然后写Controller接口:
@RestController @RequestMapping("/api") public class ObjectController { @PostMapping("/receive-objects") public ResponseEntity<String> receiveObjects(@RequestBody List<MyObject> myObjectsList) { if (myObjectsList == null || myObjectsList.isEmpty()) { return ResponseEntity.badRequest().body("没有接收到任何数据"); } // 处理你的业务逻辑 return ResponseEntity.ok(String.format("成功接收%d个对象", myObjectsList.size())); } }
关键注意事项
- 前端请求必须设置
Content-Type: application/json,Axios会自动处理,Fetch需要手动加,不然后端没法正确解析JSON数组。 - 前后端的对象结构必须严格对应,属性名要一致(或者用注解做映射),否则后端没法把JSON数据绑定到List里。
- 如果你的MyObjects里有嵌套对象,后端的模型类也要对应加上嵌套的实体类结构。
内容的提问来源于stack exchange,提问作者Cap Barracudas
相关产品推荐
相关产品推荐

