SpringBoot如何接收前端传来的json数据

 更新时间:2023年04月04日 15:16:08   作者:IT__learning  
这篇文章主要介绍了SpringBoot如何接收前端传来的json数据问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

SpringBoot接收前端传来的json数据

当前端传来json数据时,后端有两种方式可以接收:使用POJO和Map进行接收。

前端json数据:

{
    id:121,      //数字
    name:"lhj",     //字符串
    scoreList:[     //对象
                {Java:95},  
                {Python:98},
                {C++:94}
                ]
        }

使用POJO

若前端传递过来的数据刚好和我们的bean实体对象属性一致,则可以使用对象的形式接收。

后端实体类

@Component
public class Score {
    private int id;
    private String name;
    private List<ScoreList> scoreList;
}

后端Controller

@PostMapping("/student/score")
public void getScore(@RequestBody Score score){
    System.out.println(score);
    }
  • 前端数据和bean对象属性要一致
  • 必须使用@RequestBody注解

使用Map接收

若前端传递过来的数据很复杂,没有对应的POJO与其对应,就可以用Map进行接收。

后台Controller

@PostMapping("/lhj/getdata")
public void getData(@RequestBody Map<String,Object>map){
    System.out.println(map);
    }

对于Map<String,Object>,值的类型建议设置为Object,这样可以使Map能接收各种类型的数据,如字符串、数字、数组和对象等。

使用POJO和Map接收的比较

1、map的优点:

  • 灵活性更强,易扩展,耦合度低;
  • 代码简洁;
  • MyBatis查询的返回结果本身就是Map,效率可能会比返回JavaBean高。

2、map的缺点

  • JavaBean的数据在编译期就会对其进行校验,如果出错会直接提示。而Map的数据则需要到sql层才会进行处理检验。因此如果map的参数名称写错、参数值如果多传乱传只能到sql层才会被发现。
  • Map中所拥有的参数个数、类型、每个参数代表的含义对外不透明,团队开发及后期维护难度大

3、JavaBean的优点:

  • 面向对象的良好诠释;
  • 数据结构清晰,便于团队开发和后期维护;
  • 代码足够健壮,可以排除掉编译期错误;

4、javabean的缺点:

  • 代码量增多,大量时间去封装用到的表对象。
  • 可能会影响开发效率。

PO和VO相结合

  • 创建PO与数据库字段对应,用于对数据库的操作;
  • 创建VO用于封装和前端打交道的数据,使用VO可以避免使用Map

SpringBoot接收json入参

最近做一个项目,给前端vue工程提供数据接口,部门经理希望通过json格式来传递参数。

接口项目是用的springboot,所以直接使用controller里配置的path就能访问到对应的方法

示例如下:

vue调用的方法如下,可见我们传了2个参数,一个configid,一个configname

//通过json传参
var url=“http://localhost/jsonparam”;
var sendData={“configid”:55,
“configname”:“000”
};
this.$http.jsonp(url,{params : sendData}).then(function (res) {
this.msg=res.data.configName;
});

服务接口端代码:

controller方法中,入参前加@RequestParam 注解 ,value和前端传的json字段对应上

@RequestMapping(value="/jsonparam", method = RequestMethod.GET,produces="application/json;charset=UTF-8")
public   ConfigVo getjsonpparam(@RequestParam(value="configid",required=true)  Long id,@RequestParam(value="configname",required=true) String name) {
    ConfigVo vo = service.getConfigById(id);   
    return vo;
}

这样使用,就能接收前台传来的json参数。

总结

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

相关文章

  • springboot中实现通过后台创建临时表

    springboot中实现通过后台创建临时表

    这篇文章主要介绍了springboot中实现通过后台创建临时表操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-07-07
  • springboot使用@value读取配置的方法

    springboot使用@value读取配置的方法

    今天我们来讲一下如何通过python来实现自动登陆京东,以及签到领取金币。本文图文实例相结合给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧
    2019-10-10
  • java数据库数据分批读取的实现示例

    java数据库数据分批读取的实现示例

    在处理大量数据时,直接从数据库一次性读取所有数据可能会导致内存溢出或者性能下降,本文就来介绍一下java数据库数据分批读取的实现示例,感兴趣的可以了解一下
    2024-01-01
  • Java通过百度地图API获取定位(普通IP定位)的方法教程

    Java通过百度地图API获取定位(普通IP定位)的方法教程

    这篇文章主要介绍了Java通过百度地图API获取定位的方法教程,首先说明了实现这个功能的需求和初衷,然后详细描述了利用百度地图API实现这个功能的步骤,包括在百度地图开放平台的准备工作、学习官网API文档、修改API的AK配置、Java代码获取定位等,需要的朋友可以参考下
    2024-11-11
  • Spring中ApplicationEventPublisher发布订阅模式的实现

    Spring中ApplicationEventPublisher发布订阅模式的实现

    本文主要介绍了Spring中ApplicationEventPublisher发布订阅模式的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • SpringBoot 如何读取classpath下的文件

    SpringBoot 如何读取classpath下的文件

    这篇文章主要介绍了SpringBoot 读取classpath下的文件方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • java单机接口限流处理方案详解

    java单机接口限流处理方案详解

    这篇文章主要为大家详细介绍了java单机接口限流处理方案,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Java输出Hello World完美过程解析

    Java输出Hello World完美过程解析

    当我们学习一门编程语言的时候,我们都会先学如何输出Hello World!本文通过几个例子给大家介绍输出Hello World的代码,感兴趣的朋友一起看看吧
    2021-06-06
  • spring boot切面execution表达式添加多个包路径问题及解决方案

    spring boot切面execution表达式添加多个包路径问题及解决方案

    在Spring Boot中,如果你想为多个包中的方法创建一个切面,你可以在@Pointcut注解中使用||操作符来指定多个包,下面给大家分享spring boot切面execution表达式添加多个包路径问题及解决方案,感兴趣的朋友跟随小编一起看看吧
    2024-03-03
  • java序列化的种类和使用场景详解

    java序列化的种类和使用场景详解

    本文详细介绍了序列化的概念、Java内置序列化、自定义序列化、第三方序列化框架(如Kryo、Protobuf)以及在分布式系统和RPC框架中的应用,通过比较不同序列化方式的优缺点,指导开发者选择合适的序列化方案,以确保系统的性能、安全性和可维护性
    2025-01-01

最新评论