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

寻技术 JS脚本 / JAVA编程 2023年08月25日 122

本文小编为大家详细介绍“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参数。

    关闭

    用微信“扫一扫”