温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2023-04-04 17:00:35 来源:亿速云 阅读:155 作者:iii 栏目:开发技术

本文小编为大家详细介绍“SpringBoot怎么接收前端传来的json数据”,内容详细,步骤清晰,细节处理妥当,希望这篇“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怎么接收前端传来的json数据”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注亿速云行业资讯频道。

    向AI问一下细节

    免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

    AI