当前位置:   article > 正文

@RequestBody详解:用于获取请求体中的Json格式参数_@requestbody json

@requestbody json

获取请求体中的Json格式参数 (@RequestBody)

当前端将一些比较复杂的参数转换成Json字符串通过请求体传递过来给后端,这种时候就可以使用@RequestBody注解获取请求体中的数据。

而json字符串是包含在请求体中的,使用请求体传参通常都是使用POST请求

SpringBoot的web启动器已经默认导入了jackson的依赖,不需要再额外导入依赖了。

实体类:

  1. @Data
  2. @NoArgsConstructor
  3. @AllArgsConstructor
  4. public class User {
  5.    private String name;
  6.    private Integer age;
  7.    private String gender;
  8. }

请求体数据

{"name":"z","age":"3","gender":"男"}

1.获取前端传的参数封装成实体对象

如下把Json数据获取出来封装User对象

  1. @RestController
  2. public class TestController1 {
  3.    @PostMapping("/test")
  4.    public String testUser(@RequestBody User user){
  5.        System.out.println(user);
  6.        return user.toString();
  7.   }
  8. }

打印了获取到的 User 对象,它会输出类似于 User(name=z, age=3, gender=男)

2.获取参数封装成Map集合

也可以把该数据获取出来封装成Map集合:

   
  1.  @PostMapping("/user")
  2.    public String TestController2(@RequestBody Map map){
  3.        System.out.println(map);
  4.        return "Test2";
  5.   }

如果请求体传递过来的数据是一个User集合转换成的json,Json数据可以这样定义:

[{"name":"z","age":4},{"name":"zz","age":5},{"name":"zzz","age":6}]

方法定义:

   
  1.  @PostMapping("/users")
  2.    public String TestController3(@RequestBody List<User> users){
  3.        System.out.println(users);
  4.        return "test3";
  5.   }

假如是复杂对象,按照上面json定义方式结合在一起写即可:

  1. {
  2. "id":1,
  3. "Users":
  4. [{"name":"z","age":4},{"name":"zz","age":5},{"name":"zzz","age":6}],
  5. "score":["100","0","99"]
  6. }

  如果需要使用@RequestBody来获取请求体中Json并且进行转换,要求请求头 Content-Type 的值要为: application/json 。也就是前端以Content-Type 为application/json,传递json字符串数据,后端以@RequestBody 模型接收数据。

——————————————————————————————————————————

其他Controller类常用的注解可以这个文章的汇总:Web开发Controller类详解-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/310148
推荐阅读
相关标签
  

闽ICP备14008679号