使用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。

在这里插入图片描述

相关内容

热门资讯

免费测试版!丰城麻将辅助器功能... 免费测试版!丰城麻将辅助器功能脚本,丰城麻将一贯有辅助器脚本(确实有辅助挂)1)丰城麻将有没有挂:进...
指导大家开挂!起点休闲开挂AI... 指导大家开挂!起点休闲开挂AI技巧,起点休闲多功能其实是有开挂技巧1、起点休闲模拟器是什么优化,起点...
教学盘点!亲友潮汕麻将开挂功能... 教学盘点!亲友潮汕麻将开挂功能教程,亲友潮汕麻将好像真的是有开挂教程(有辅助挂工具)1、起透看视 亲...
实测揭晓透视器!葫芦岛爱玩麻将... 实测揭晓透视器!葫芦岛爱玩麻将透视器AI攻略,葫芦岛爱玩麻将多功能确实真的有透视器攻略亲,关键说明,...
今日头条!竹间茶馆辅助功能软件... 今日头条!竹间茶馆辅助功能软件,竹间茶馆原来真的有辅助软件(有辅助挂解密)1、实时竹间茶馆透视辅助更...
重要通知外挂!捉红三外挂AI脚... 重要通知外挂!捉红三外挂AI脚本,捉红三多功能竟然是真的有外挂脚本所有人都在同一条线上,像星星一样排...
盘点一款!人人烟台麻将透视挂功... 盘点一款!人人烟台麻将透视挂功能方法,人人烟台麻将真是是真的有透视挂方法(有辅助挂猫腻)1)人人烟台...
我来教大家透视挂!非常麻将透视... 我来教大家透视挂!非常麻将透视挂AIapp,非常麻将多功能竟然存在有透视挂app在进入非常麻将软件靠...
一秒答解!盛元游戏透视功能工具... 一秒答解!盛元游戏透视功能工具,盛元游戏一直有透视工具(有辅助挂秘诀)1、实时盛元游戏透视辅助更新:...
技术分享辅助器!江山大厅辅助器... 技术分享辅助器!江山大厅辅助器AI插件,江山大厅多功能确实真的是有辅助器插件1、全新机制【江山大厅a...