如何使用@RequestBody

    技术2022-07-11  105

    基础知识

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

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

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

    示例代码

    直接以String来接收json类型的数据 接收json数据并放入对象中 @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方法进行解析。

    Processed: 0.015, SQL: 9