• 【教程】fastjson升级,spring boot设置fastjson2做序列化反序列化


    FastJsonHttpMessageConverter

    一、简介

    项目地址

    为什么要升级? 官方给出的对比

    fastjson2并非常规升级,可以说是一次重构。fastjson2更快,更安全

    二、如何升级?

    2.1 替换maven和包名

    如果代码中没有过多的直接使用FastJson的类,直接替换maven和.java文件中的包名即可

    建议大家不要直接使用Json类,而是自己封装一个json类,这样当出现问题时,也好改,避免每次都去修改大量的文件

    2.2 修改SpringBoot MessageConverters

    spring boot默认的消息转换中,json的序列化和反序列化是jackson

    如果你在fastjson 1配置了消息转换,升级到fastjson2,你需要引入fastjson2-extension,并且FastJsonHttpMessageConverter的包名为

    com.alibaba.fastjson2.support.spring.http.converter.FastJsonHttpMessageConverter

    完整的配置文件(博主当前是spring boot 2.6.7)

    
            
                org.springframework.boot
                spring-boot-starter-web
                
                    
                    
                        org.springframework.boot
                        spring-boot-starter-json
                    
                
            
    
    
            
                com.alibaba.fastjson2
                fastjson2
                ${fastjson2.version}
            
    
            
                com.alibaba.fastjson2
                fastjson2-extension
                ${fastjson2.version}
            
    
    
    // 和fastjson 1一样,只是包路径变了
    // import com.alibaba.fastjson2.support.spring.http.converter.FastJsonHttpMessageConverter;
    
    @Configuration
    public class JsonMessageConverterConfigurer implements WebMvcConfigurer {
        @Override
        public void configureMessageConverters(List> converters) {
            FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter();
            // 自定义配置...
            // FastJsonConfig config = new FastJsonConfig();
            // config.set...
            // converter.setFastJsonConfig(config);
    
            // spring boot高版本无需配置,低版本不配置报错:Content-Type cannot contain wildcard type '*'
            List fastMediaTypes = new ArrayList<>();
            fastMediaTypes.add(MediaType.APPLICATION_JSON);
            fastMediaTypes.add(MediaType.APPLICATION_JSON_UTF8);
            converter.setSupportedMediaTypes(fastMediaTypes);
    
            converters.add(0,converter);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49

    先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

  • 相关阅读:
    前端黑魔法 —— 隐藏网络请求的调用栈
    软件测试(五)自动化 selenium
    SpringBoot整合MyBatis从零开始
    『无为则无心』Python日志 — 66、将日志信息保存到文件中
    phpstudy脚本编写 和sql注入编写
    【简单了解一下红黑树】
    AI新时代,新华三存储新思考
    微信小程序如何关联视频号直播
    【webrtc】sigslot : 继承has_slot 及相关流程和逻辑
    18.flink kafka使用thrift序列化
  • 原文地址:https://blog.csdn.net/m0_67394006/article/details/126080799