SpringBoot怎么接收前端传来的json数据

前端开发   发布日期:2024年11月29日   浏览次数:326

本文小编为大家详细介绍“SpringBoot怎么接收前端传来的json数据”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringBoot怎么接收前端传来的json数据”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

    SpringBoot接收前端传来的json数据

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

    前端json数据:

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

    使用POJO

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

    后端实体类

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

    后端Controller

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

    • 必须使用@RequestBody注解

    使用Map接收

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

    后台Controller

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

    对于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. //通过json传参
    2. var url=“http://localhost/jsonparam”;
    3. var sendData={“configid”:55,
    4. configname”:“000
    5. };
    6. this.$http.jsonp(url,{params : sendData}).then(function (res) {
    7. this.msg=res.data.configName;
    8. });

    服务接口端代码:

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

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

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

    以上就是SpringBoot怎么接收前端传来的json数据的详细内容,更多关于SpringBoot怎么接收前端传来的json数据的资料请关注九品源码其它相关文章!