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

2023-04-07编程技术233699

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参数。

总结

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

本文地址:https://www.ufcn.cn/tutorials/2424232.html

如非特殊说明,本站内容均来自于网友自主分享,概不代表本站观点,如有任何问题我们都将在收到反馈后的第一时间进行处理!