@RequestBody详解:用于获取请求体中的Json格式参数
2023-12-24 13:39:20
获取请求体中的Json格式参数 (@RequestBody)
当前端将一些比较复杂的参数转换成Json字符串通过请求体传递过来给后端,这种时候就可以使用@RequestBody注解获取请求体中的数据。
而json字符串是包含在请求体中的,使用请求体传参通常都是使用POST请求。
SpringBoot的web启动器已经默认导入了jackson的依赖,不需要再额外导入依赖了。
实体类:
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
? ?private String name;
? ?private Integer age;
? ?private String gender;
}
请求体数据
{"name":"z","age":"3","gender":"男"}
1.获取前端传的参数封装成实体对象
如下把Json数据获取出来封装User对象
@RestController
public class TestController1 {
? ?@PostMapping("/test")
? ?public String testUser(@RequestBody User user){
? ? ? ?System.out.println(user);
? ? ? ?return user.toString();
? }
}
打印了获取到的 User
对象,它会输出类似于 User(name=z, age=3, gender=男)
2.获取参数封装成Map集合
也可以把该数据获取出来封装成Map集合:
?
?@PostMapping("/user")
? ?public String TestController2(@RequestBody Map map){
? ? ? ?System.out.println(map);
? ? ? ?return "Test2";
? }
如果请求体传递过来的数据是一个User集合转换成的json,Json数据可以这样定义:
[{"name":"z","age":4},{"name":"zz","age":5},{"name":"zzz","age":6}]
方法定义:
?
?@PostMapping("/users")
? ?public String TestController3(@RequestBody List<User> users){
? ? ? ?System.out.println(users);
? ? ? ?return "test3";
? }
假如是复杂对象,按照上面json定义方式结合在一起写即可:
{
"id":1,
"Users":
[{"name":"z","age":4},{"name":"zz","age":5},{"name":"zzz","age":6}],
"score":["100","0","99"]
}
? 如果需要使用@RequestBody来获取请求体中Json并且进行转换,要求请求头 Content-Type 的值要为: application/json 。也就是前端以Content-Type 为application/json,传递json字符串数据,后端以@RequestBody 模型接收数据。
——————————————————————————————————————————
其他Controller类常用的注解可以这个文章的汇总:Web开发Controller类详解-CSDN博客
文章来源:https://blog.csdn.net/weixin_72926030/article/details/133841227
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!