好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

SpringBoot接收前端传来的json数据

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

前端json数据:

?
1
2
3
4
5
6
7
8
9
{
     id: 121 ,      //数字
     name: "lhj" ,     //字符串
     scoreList:[     //对象
                 {Java: 95 },  
                 {Python: 98 },
                 {C++: 94 }
                 ]
         }

使用POJO

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

后端实体类

?
1
2
3
4
5
6
@Component
public class Score {
    private int id;
    private String name;
    private List<ScoreList> scoreList;
}

后端Controller

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

使用Map接收

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

后台Controller

?
1
2
3
4
@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

?
1
2
3
4
5
6
7
8
//通过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字段对应上

?
1
2
3
4
5
@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://blog.csdn.net/IT__learning/article/details/115026067

查看更多关于SpringBoot如何接收前端传来的json数据的详细内容...

  阅读:26次