如何使用@RequestBody

基础知识

@RequestBody是Spring中用来接收前端传递给后台的json数据并将数据放进相应的实体类中的一个注解,使用@RequestBody时必须使用POST请求提交,在后端的接收方法里,@RequestBody和@RequestParam可以同时存在,但是@RequestBody只能有一个而@RequestParam可以有多个

使用@RequestBody接收数据时必须满足以下要求:

  1. @RequestBody在将数据放入相应实体类时(@Requestbody后面声明的类),会根据json中的key和实体类中的属性进行匹配,如果有相对应的属性的话,就会将调用实体类的setter方法传给该属性
  2. json字符串中,如果value为"“的话,后端对应属性如果是String类型的,那么接受到的就是”",如果是后端属性的类型是Integer、Double等类型,那么接收到的就是null。
  3. json字符串中,如果value为null的话,后端对应收到的就是null。
  4. 如果某个字段没有值,那么就不要把该字段写进json字符串中,或者将它的value定义为null或""。

示例代码

  1. 直接以String来接收json类型的数据
    在这里插入图片描述
  2. 接收json数据并放入对象中
    在这里插入图片描述
  3. @RequestBody和@RequestParam同时使用
    在这里插入图片描述

@RequestBody将json数据进行装配的匹配规则

声明:根据不同的Content-Type等情况,Spring-MVC会采取不同的HttpMessageConverter实现来进行信息转换解析。
下面介绍的是最常用的:前端以Content-Type 为application/json,传递json字符串数据;后端以@RequestBody
模型接收数据的情况。

解析json数据大体流程概述:
Http传递请求体信息,最终会被封装进com.fasterxml.jackson.core.json.UTF8StreamJsonParser中(提示:Spring采用CharacterEncodingFilter设置了默认编码为UTF-8),然后在public class BeanDeserializer extends BeanDeserializerBase implements java.io.Serializable中,通过 public Object deserializeFromObject(JsonParser p, DeserializationContext ctxt) throws IOException方法进行解析。

猜你喜欢

转载自blog.csdn.net/weixin_41660213/article/details/107062433
今日推荐