SpringBoot后端接收数组对象的实现

 更新时间:2022年11月21日 11:08:40   作者:右耳朵猫  
这篇文章主要介绍了SpringBoot后端接收数组对象的实现方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

SpringBoot后端接收数组对象

前端代码

var Params = {
  type: "typeA",
  title: "titleA",
  authors: [{name:"upxuan", age:"18"}, {name:"susen", age:"18"}]
}
console.log(Params)
this.$ajax({
  url: '/api/manualAdd',
  method: 'post',
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  data: Params
}).then( res => {
  console.log(res)
})

后端代码

@RequestMapping("/manualAdd")
@ResponseBody
public String AddManualJpaper (@RequestBody RequestManualAddData data) {
    System.out.println("User:" + data.getType() + "," + data.getTitle());
    System.out.println("Authors:" + data.getAuthors().get(0).getName() + "," + data.getAuthors().get(0).getAge());
    return "Get it";
}

接收的数据对象类

private String type;
private String title;
private List<AuthorsModel> authors;
 
public String getType() {
    return type;
}
 
public void setType(String type) {
    this.type = type;
}
 
public String getTitle() {
    return title;
}
 
public void setTitle(String title) {
    this.title = title;
}
public List<AuthorsModel> getAuthors() {
    return authors;
}
 
public void setAuthors(List<AuthorsModel> authors) {
    this.authors = authors;
}

model

private String name;
private int age;
public String getName() {
    return name;
}
 
public void setName(String name) {
    this.name = name;
}
public int getAge() {
    return age;
}
 
public void setAge(int age) {
    this.age = age;
}

后端List接收数组报400或收不到参数值

遇到一个关于前端传数组到后端时因为无法接收参数报400或者接收不到参数值的问题:

在springboot项目中经常会用 @RequestBody 或者 @RequestParam在接口中接收参数,我们都知道:

  • @RequestBody 用于接收json格式的对象数据,像自定义User实体类对象,Map,List等
  • @RequestParam 用于接收单个的属性

像上面的用对象或者单个属性去接收前端传来的参数,还是能很愉快的接收的,但是有一种类型的就比较容易让人极度不适了,那就是数组和集合类型的参数

 这里我说一个集合类型的参数,数组大致一样:

 如上图接收一个List集合,不管是用 @RequestBody还是用 @RequestParam接收都没有成功,不是报400就是参数值为null,然后就去百度疯狂的逛了几条芥,

还是没有找到一个有效的办法,最后索性自己研究,终于把问题给解决了。

说下我的解决方法

首相从postman工具我们可以看到json有两种格式一种是 { }  还有一种是 [ ] ,{}传对象,[]传数组,这个和前端的传参方式是对应的,所以前端在传参数到后端时

就不能用{}而要用[]否则就会报400的错误,如下

var params = ["aaaa", "bbbb", "ccccc"];

属性名可以自定义不影响后端接收,后端用 @RequestBody和 @RequestParam都能接收,至此问题就解决了,希望对大家有所帮助,如果那个地方有不对的也欢迎大家留言纠正!

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring jndi数据源配置方法详解

    Spring jndi数据源配置方法详解

    这篇文章主要为大家详细介绍了Spring jndi数据源的配置方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下解
    2017-07-07
  • Java使用Canal同步MySQL数据到Redis

    Java使用Canal同步MySQL数据到Redis

    在现代微服务架构中,数据同步是一个常见的需求,特别是将 MySQL 数据实时同步到 Redis,下面我们就来看看Java如何使用Canal同步MySQL数据到Redis吧
    2024-11-11
  • SpringCloud-Nacos服务注册与发现方式

    SpringCloud-Nacos服务注册与发现方式

    这篇文章主要介绍了SpringCloud-Nacos服务注册与发现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • java修饰类的使用方法以及使用技巧(分享)

    java修饰类的使用方法以及使用技巧(分享)

    下面小编就为大家带来一篇java修饰类的使用方法以及使用技巧(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-01-01
  • java图形用户界面实现菜单功能

    java图形用户界面实现菜单功能

    这篇文章主要为大家详细介绍了java图形用户界面实现菜单功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • Java日常练习题,每天进步一点点(61)

    Java日常练习题,每天进步一点点(61)

    下面小编就为大家带来一篇Java基础的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你
    2021-08-08
  • SpringCloud用Zookeeper搭建配置中心的方法

    SpringCloud用Zookeeper搭建配置中心的方法

    本篇文章主要介绍了SpringCloud用Zookeeper搭建配置中心的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-04-04
  • springcloud使用Hystrix进行微服务降级管理

    springcloud使用Hystrix进行微服务降级管理

    这篇文章主要介绍了springcloud使用Hystrix进行微服务降级管理,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • easyExcel分批导入文件方式

    easyExcel分批导入文件方式

    这篇文章主要介绍了easyExcel分批导入文件方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • springboot整合JPA过程解析

    springboot整合JPA过程解析

    这篇文章主要介绍了springboot整合JPA过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02

最新评论