记录升级fastjson从1.x升级到2.x后的相关问题和内容
fastjson2是大版本升级,和1.x有些内容不兼容,所以,升级需谨慎。 我在系统中升级的目标有两个:
- 能使用jackson替换掉fastjson尽量替换掉
- 如果不能替换,只用fastjson2做一个json工具包,不将其与spring boot做深度整合
我是用的fastjson版本为2.0.4
<dependency>
<groupId>com.alibaba.fastjson2</groupId>
<artifactId>fastjson2</artifactId>
<version>2.0.4</version>
</dependency>
- 升级后原来很多api从com.alibaba.fastjson包调整到com.alibaba.fastjson2下
- 使用jackson替换fastjson作为系统默认的json解析器
- 删除掉原有的FastjsonConfig配置
- 配置文件中增加jackson配置:
spring.jackson.date-format=YYYY-MM-dd HH:mm:ss spring.jackson.locale=zh spring.jackson.time-zone=GMT+8
- java entity中增加注解:
/** * jackson在对hibernate的持久化实体类的代理对象进行序列化时,代理类中的"hibernateLazyInitializer"属性为空,触发了系列化规划SerializationFeature.FAIL_ON_EMPTY_BEANS,即“出现空Bean时触发序列化失败”! **/ @JsonIgnoreProperties(value = {"hibernateLazyInitializer", "handler"}) 或者在spring boot启动类增加: @Bean public ObjectMapper objectMapper() { return new ObjectMapper().disable(SerializationFeature.FAIL_ON_EMPTY_BEANS); }