使用FastJsonHttpMessageConverter解析@RequestBody参数
创始人
2025-05-29 11:02:36
0

文章目录

  • 1、使用方式
  • 2、FastJsonHttpMessageConverter 不生效问题
    • 解决措施
  • 3、作用
    • 1)解析文本格式的json字符串参数
    • 2)参数下划线转驼峰
  • 4、实现方式
    • 1)FastJsonHttpMessageConverter#canRead()
    • 2)FastJsonHttpMessageConverter#read()

1、使用方式

1> pom中引入fastjson相关依赖:

com.alibabafastjson1.2.77

2> 添加FastJsonHttpMessageConverter类型转换器配置(这种配置方式是无效的):

@Configuration
public class FastJsonMessageConverterConfig implements WebMvcConfigurer{public FastJsonHttpMessageConverter fastJsonHttpMessageConverter() {return new FastJsonHttpMessageConverter();}@Overridepublic void configureMessageConverters(List> converters) {converters.add(fastJsonHttpMessageConverter());}
}

3> JSON字符串对应的JAVA模型:

@Data
public class Person {private String name;private Integer age;private Boolean sex;private String otherInfo;
}

4> 后端Controller接口:

在这里插入图片描述

2、FastJsonHttpMessageConverter 不生效问题

@Configuration
public class FastJsonMessageConverterConfig implements WebMvcConfigurer{public FastJsonHttpMessageConverter fastJsonHttpMessageConverter() {return new FastJsonHttpMessageConverter();}@Overridepublic void configureMessageConverters(List> converters) {converters.add(fastJsonHttpMessageConverter());}
}

使用上述配置方式配置FastJsonHttpMessageConverter,其不会生效,解析JSON类型参数依旧是使用的MappingJackson2HttpMessageConverter。

因为自定义的FastJsonHttpMessageConverter 排在所有MessageConverter的最后;

  • PS:《传送链接》Spring MVC 如何解析各种参数数据(3月13日早8点发出)
    在这里插入图片描述
  • 根据消息转换器的应用规则,会顺序选择符合要求的消息转换器,当有一个合适的MessageConverter之后,不会再看后面的MessageConverter。
  • 而MappingJackson2HttpMessageConverter 在 FastJsonHttpMessageConverter 之前,所以会使用MappingJackson2HttpMessageConverter 进行消息转换 ;

解决措施

解决措施很简单:将FastJsonHttpMessageConverter消息转换器 添加在MappingJackson2HttpMessageConverter 前面;

@Configuration
public class FastJsonMessageConverterConfig{@Beanpublic HttpMessageConverters fastJsonHttpMessageConverters() {return new HttpMessageConverters(new FastJsonHttpMessageConverter());}
}

效果:

在这里插入图片描述

3、作用

用于解析JSON类型参数的FastJsonHttpMessageConverter相比于Spring MVC原生携带的MappingJackson2HttpMessageConverter多了两个作用:

  1. FastJson可以解析文本格式的JSON字符串参数,自动给json请求添加请求头:Content-Type:application/json;
  2. 将参数下划线转为驼峰; 比如:other_info 转为 otherInfo

1)解析文本格式的json字符串参数

在这里插入图片描述

2)参数下划线转驼峰

在这里插入图片描述

4、实现方式

FastJsonHttpMessageConverter处理请求参数的入口如下:

在这里插入图片描述

1)FastJsonHttpMessageConverter#canRead()

判断FastJsonHttpMessageConverter是否可以转换当前ContentType的请求:

  • FastJsonHttpMessageConverter可以转换任意类型的请求。

在这里插入图片描述

2)FastJsonHttpMessageConverter#read()

直接调用FastJson的序列化API将JSON字符串数据系列化为相应的Java Type。

在这里插入图片描述

相关内容

热门资讯

美交通部长称印度空难后,暂未发... 6月13日消息,6月12日获悉,美国交通部长肖恩·达菲和美国联邦航空管理局代理局长克里斯·罗切洛在新...
南向资金今日净买入55.85亿... 6月12日消息,南向资金今日净买入55.85亿港元。小鹏汽车-W、信达生物、建设银行分别获净买入5....
WTI原油日内涨2%,现报65... 6月11日消息,WTI原油日内涨2%,现报65.18美元/桶;布伦特原油日内涨1.88%,现报67....
马来西亚5月棕榈油产量为177... 6月10日消息,马来西亚5月棕榈油产量为177万吨,较4月增长5.05%。(广角观察)
电投能源:拟发行股份及支付现金... 5月18日消息,电投能源(002128.SZ)公告称,公司正在筹划发行股份及支付现金购买资产并募集配...
普通人怎么从股市上赚钱? 文: 泽平宏观团队普通人怎么从股票市场上赚钱?这个大家都很关心,对吧?因为我们发现,像巴菲特、芒格、...
金银疯涨,贵金属“赢麻了”! 贵金属市场延续狂热态势。12月26日,金银现货与期货价格同步创下历史新高。现货市场上,截至记者发稿,...
沪指八连阳!A股下周怎么走? 12月26日,A股三大指数小幅收红,为本周行情收官,沪指日线拉出八连阳。全天成交额放大至2.18万亿...
广泰真空原董事或携两名发明人出... 《金证研》北方资本中心 含章/作者 廉贞 映蔚/风控2025年1月至11月,国内国镨钕混合金属平均值...
霸王茶姬美股大跌,此前因“咖啡... 2025.12.26本文字数:663,阅读时长大约1分钟12月26日,霸王茶姬美股跌超14%,创上市...