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

Fastjson2 是阿里推出的高性能、安全、全场景支持 的 JSON 处理库,相比 1.x 更快、更安全、Bug 更少,支持 JSONB、JSONPath、Kotlin、GraalVM 等特性。这篇文章带你在 Spring Boot 项目里快速集成、正确配置、避开常见坑


一、Fastjson2 核心优势

  • 性能远超 Fastjson1.x、Jackson、Gson
  • 修复大量历史安全漏洞
  • 支持 JSON/JSONB 双格式
  • JSONPath 原生支持
  • 兼容 Java/Android/Kotlin/大数据/GraalVM
  • Spring MVC 无缝集成

二、Spring Boot 集成步骤

1. Maven 依赖(直接复制)

复制代码
<!-- fastjson2 核心 -->
<dependency>
    <groupId>com.alibaba.fastjson2</groupId>
    <artifactId>fastjson2</artifactId>
    <version>2.0.40</version>
</dependency>

<!-- Spring5/SpringBoot2 扩展包 -->
<dependency>
    <groupId>com.alibaba.fastjson2</groupId>
    <artifactId>fastjson2-extension-spring5</artifactId>
    <version>2.0.40</version>
</dependency>

2. 替换 Spring MVC 消息转换器

把 Spring 默认的 Jackson 换成 Fastjson2,让 @ResponseBody / @RequestBody 都走 Fastjson2。

复制代码
@Configuration
public class Fastjson2Config implements WebMvcConfigurer {

    @Override
    public void configureMessageConverters(List<HttpMessageConverter<?>> 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 Map<String, Object> test() {
        Map<String, 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 常用 API

1. Java 对象 → JSON 字符串

复制代码
String json = JSON.toJSONString(obj);

2. JSON 字符串 → Java 对象

复制代码
User user = JSON.parseObject(json, User.class);

3. JSON 数组 → List

复制代码
List<User> 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 个高频坑 + 解决方案

坑1:BigDecimal 精度丢失(非常重要)

问题-40090.07 变成 -40090.7,金额直接出错。

原因:默认以科学计数/浮点处理。

解决 :加特性 WriteBigDecimalAsPlain

复制代码
JSON.toJSONString(obj, JSONWriter.Feature.WriteBigDecimalAsPlain);

坑2:日期解析/格式化异常

问题yyyy-MM-dd HH:mm:ss 格式无法解析。

解决

  1. 全局配置日期格式

  2. 字段上加注解

    @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 防止金额精度丢失
  • 日期全局配置 + 注解双保险
相关推荐
JiaWen技术圈1 小时前
内核子系统 nf_tables 深度解析
linux·服务器·安全·运维开发
LIUAWEIO1 小时前
鸽鸽工具网:免费在线工具大全,打开网页即用
人工智能·安全·ai·json
moonsims2 小时前
NavCore惯性测量导航-轻量级安全惯导 / UAV 安全触发 IMU 模块-异构双IMU架构-低噪声稳定感知+高动态异常检测
安全·架构
乐迪信息2 小时前
乐迪信息:实时预警,秒级响应:船舶AI异常行为检测算法
大数据·人工智能·算法·安全·目标跟踪
其实防守也摸鱼3 小时前
带你了解与配置phpmyadmin
笔记·安全·网络安全·pdf·编辑器·工具·调试
也许明天y3 小时前
LangChain4j + Spring Boot 多智能体协调架构原理深度解析
spring boot·后端·agent
byoass3 小时前
企业云盘权限管理深度对比:巴别鸟、联想Filez、腾讯企微云盘
网络·安全·云计算·企业微信
RkxI7soAM4 小时前
冷钱包选购的安全标准答案:锁定Ledger官方授权店铺
人工智能·安全
FastCAE20224 小时前
【FastCAE-OpenRadioss案例分享】飞机风挡玻璃鸟撞安全分析
安全·显式动力学