资讯动态

Spring Boot 集成 Fastjson2 完整教程:从入门到避坑

发布时间:2026/10/14 0:12:46 来源:尧图企业网站定制
Fastjson2 是阿里推出的高性能、安全、全场景支持的 JSON 处理库相比 1.x 更快、更安全、Bug 更少支持 JSONB、JSONPath、Kotlin、GraalVM 等特性。这篇文章带你在 Spring Boot 项目里快速集成、正确配置、避开常见坑。一、Fastjson2 核心优势性能远超 Fastjson1.x、Jackson、Gson修复大量历史安全漏洞支持JSON/JSONB双格式JSONPath原生支持兼容 Java/Android/Kotlin/大数据/GraalVMSpring MVC 无缝集成二、Spring Boot 集成步骤1. Maven 依赖直接复制!-- fastjson2 核心 -- dependency groupIdcom.alibaba.fastjson2/groupId artifactIdfastjson2/artifactId version2.0.40/version /dependency !-- Spring5/SpringBoot2 扩展包 -- dependency groupIdcom.alibaba.fastjson2/groupId artifactIdfastjson2-extension-spring5/artifactId version2.0.40/version /dependency2. 替换 Spring MVC 消息转换器把 Spring 默认的 Jackson 换成 Fastjson2让ResponseBody/RequestBody都走 Fastjson2。Configuration public class Fastjson2Config implements WebMvcConfigurer { Override public void configureMessageConverters(ListHttpMessageConverter? converters) { FastJsonHttpMessageConverter converter new FastJsonHttpMessageConverter(); // Fastjson 配置 FastJsonConfig config new FastJsonConfig(); // 日期格式 config.setDateFormat(yyyy-MM-dd HH:mm:ss); // 序列化特性输出null、格式化、BigDecimal不丢精度 config.setWriterFeatures( JSONWriter.Feature.WriteMapNullValue, JSONWriter.Feature.PrettyFormat, JSONWriter.Feature.WriteBigDecimalAsPlain ); // 反序列化特性支持数组转Bean、字段匹配更智能 config.setReaderFeatures( JSONReader.Feature.FieldBased, JSONReader.Feature.SupportArrayToBean, JSONReader.Feature.SupportSmartMatch ); converter.setFastJsonConfig(config); converter.setDefaultCharset(StandardCharsets.UTF_8); converter.setSupportedMediaTypes(Collections.singletonList(MediaType.APPLICATION_JSON)); // 放到最前面优先使用 converters.add(0, converter); } }3. 测试接口RestController public class TestController { GetMapping(/test) public MapString, Object test() { MapString, Object map new HashMap(); map.put(code, 200); map.put(msg, Fastjson2 集成成功); map.put(nullValue, null); return map; } }启动访问http://localhost:8080/test返回格式化 JSON、null 正常输出 → 集成成功。三、Fastjson2 常用 API1. Java 对象 → JSON 字符串String json JSON.toJSONString(obj);2. JSON 字符串 → Java 对象User user JSON.parseObject(json, User.class);3. JSON 数组 → ListListUser userList JSON.parseArray(json, User.class);4. List → JSON 字符串String json JSON.toJSONString(list);5. JSONPath 读取超好用String name JSONPath.of(json).getString($.data.name);四、生产必看2 个高频坑 解决方案坑1BigDecimal 精度丢失非常重要问题-40090.07变成-40090.7金额直接出错。原因默认以科学计数/浮点处理。解决加特性WriteBigDecimalAsPlainJSON.toJSONString(obj, JSONWriter.Feature.WriteBigDecimalAsPlain);坑2日期解析/格式化异常问题yyyy-MM-dd HH:mm:ss格式无法解析。解决全局配置日期格式字段上加注解JSONField(format yyyy-MM-dd HH:mm:ss) private Date createTime;五、推荐配置生产直接用// 序列化推荐 config.setWriterFeatures( JSONWriter.Feature.WriteMapNullValue, // 输出 null 字段 JSONWriter.Feature.WriteBigDecimalAsPlain, // BigDecimal 不丢精度 JSONWriter.Feature.PrettyFormat, // 格式化输出 JSONWriter.Feature.WriteDateUseDateFormat // 全局日期格式化 ); // 反序列化推荐 config.setReaderFeatures( JSONReader.Feature.SupportSmartMatch, // 智能匹配字段 JSONReader.Feature.IgnoreNullCheck, // 忽略 null 检查 JSONReader.Feature.AllowUnmatchedField // 忽略不存在字段 );六、总结Fastjson2 高性能 安全 功能强Spring Boot 集成只需两步引依赖 配置转换器生产务必开启WriteBigDecimalAsPlain防止金额精度丢失日期全局配置 注解双保险

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑