• SpringBoot接收前端传来的json数据


    当前端传来json数据时,后端有多种方式接收
    前端json数据:

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

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

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

    后端Controller

    @PostMapping("/student/score")
    public void getScore(@RequestBody Score score){
    	System.out.println(score);
        }
    
    • 1
    • 2
    • 3
    • 4

    ● 前端数据和bean对象属性要一致
    ● 必须使用@RequestBody注解

    二、使用Map接收
    后台Controller

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

    前端传来的是一个json对象时:{【id,name】},可以用Map来获取

    @RequestMapping(value = "/update")
    @ResponseBody
    public String updateAttr(@RequestBody Map<String, String> map) {
        if(map.containsKey("id"){
            Integer id = Integer.parseInt(map.get("id"));
        }
        if(map.containsKey("name"){
            String objname = map.get("name").toString();
        }
        // 操作 ...
        return "success";
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    对于Map,值的类型建议设置为Object,这样可以使Map能接收各种类型的数据,如字符串、数字、数组和对象等。

    三、以RequestParam接收
    前端传来的是json数据不多时:[id:id],可以直接用@RequestParam来获取值

    @RequestMapping(value = "/update") @ResponseBody public String updateAttr(@RequestParam ("id") int id) {
        int res=xxService.deleteData(id);
        return "success"; }
    
    • 1
    • 2
    • 3

    四、以List接收
    当前端传来这样一个json数组:[{id,name},{id,name},{id,name},…]时,用List接收

    @RequestMapping(value = "/update")
    @ResponseBody
    public String updateAttr(@RequestBody List<Accomodation> list) {
        for(Accomodation accomodation:list){
            System.out.println(accomodation.toString());
        }
        return "success";
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    五、以JSONobject形式接收
    此接收匹配所有的类型,需要前后台传参数对应

    @ResponseBody
    	@PostMapping("/info")
    	public JSONObject merchantForInfo(@RequestBody JSONObject jsonObject) {
    Integer type = jsonObject.getInteger("type");
    		String bankname = jsonObject.getString("bankname");
    		String bankcard = jsonObject.getString("bankcard");
    		String idno = jsonObject.getString("idno");
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
  • 相关阅读:
    @react-google-maps/api实现谷歌地图中添加多边围栏,并可编辑,编辑后可获得围栏各个点的经纬度
    http请求工具类
    研发人员如何做好管理
    自定义事件的监听及触发
    vmware扩容CentOS磁盘的两种方案
    Matplotlib数据可视化基础
    Andrej Karpathy | 详解神经网络和反向传播(基于 micrograd)
    个人商业模式,如何让自己变得值钱
    MySQL 视图View的SQL语法和更新(视图篇 二)
    深度解析JavaScript事件对象属性
  • 原文地址:https://blog.csdn.net/qq_41512902/article/details/126060344