重剑无锋,大巧不工 SpringBoot --- @RequestBody JSON参数处理
问题
- 用jackson 作为json转换器的时候,如果传入的json的key 比接收对象多的话,就会报错
解决
先看下SpringMVC原来的配置
1 | <mvc:message-converters register-defaults="true"> |
这里的json转换器配置的是:org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
我们进入到这个类中发现,这个类是继承的 AbstractJackson2HttpMessageConverter
而 AbstractJackson2HttpMessageConverter
继承的是 AbstractHttpMessageConverter<Object>
找到这个包下面 有一个类 GsonHttpMessageConverter
同样继承的 AbstractHttpMessageConverter<Object>
OK,就是他了
1 | <mvc:message-converters register-defaults="true"> |
这样,参数就随便你整吧,多点少点杜无所谓,完全匹配不上就返回个{}给你
来看下fastjson
fastjson下面有这个一个 package : com.alibaba.fastjson.support.spring
根据字面意思可知,这里是对spring的支持
找到下面这个class FastJsonHttpMessageConverter
1 | public class FastJsonHttpMessageConverter extends AbstractHttpMessageConverter<Object> |
OK,这个类同样也是继承了 AbstractHttpMessageConverter
只要把这个类注入进去就可以了
SpringBoot使用FastJSON解析数据
- 第一种继承WebMvcConfigurerAdapter,重写configureMessageConverters方法:
1 |
|
- 第二种方式bean注入HttpMessageConverters:
1 |
|