Java 中处理 JSON:Gson vs Jackson vs Fastjson 对比

全面对比 Java 三大 JSON 库:Gson、Jackson、Fastjson。从性能、易用性、安全性角度帮你做出最佳选择。

JSON 工具 2026-05-28 10 分钟

Java 中处理 JSON:Gson vs Jackson vs Fastjson 对比

Java 生态中有三大主流 JSON 库:Gson、Jackson 和 Fastjson。本文从多个维度对比它们的差异,帮你选择最适合的库。

三大 JSON 库简介

Gson(Google)

Google 开发的 JSON 库,以简洁易用著称。

Gson gson = new Gson();
String json = gson.toJson(user);
User user = gson.fromJson(json, User.class);

Jackson(Spring Boot 默认)

功能最强大的 JSON 库,Spring Boot 默认集成。

ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(user);
User user = mapper.readValue(json, User.class);

Fastjson(阿里巴巴)

阿里巴巴开发的高性能 JSON 库,国内使用广泛。

String json = JSON.toJSONString(user);
User user = JSON.parseObject(json, User.class);

性能对比

对 10 万条数据的序列化/反序列化测试:

操作 Gson Jackson Fastjson
序列化 450ms 280ms 220ms
反序列化 520ms 310ms 260ms
内存占用

结论:Fastjson 最快,Jackson 次之,Gson 最慢。

功能对比

功能 Gson Jackson Fastjson
注解支持
自定义序列化
流式 API
JSON Schema
树模型
日期处理 手动 自动 自动
null 处理 可配置 可配置 可配置

安全性对比

Fastjson 安全问题

Fastjson 1.x 存在多个远程代码执行漏洞(CVE),需要:

  • 升级到 Fastjson 2.x
  • 开启 SafeMode
  • 限制反序列化白名单

Jackson 安全问题

Jackson 相对安全,但需要注意:

  • 禁用 enableDefaultTyping()(防止反序列化漏洞)
  • 使用白名单限制反序列化类型

Gson 安全性

Gson 设计简单,没有已知的严重安全漏洞。

选择建议

推荐 Jackson 的场景

  • Spring Boot 项目(默认集成)
  • 需要复杂 JSON 处理
  • 对安全性要求高
  • 企业级项目

推荐 Gson 的场景

  • 简单的 JSON 处理
  • Android 开发
  • 追求代码简洁
  • 小型项目

推荐 Fastjson 的场景

  • 对性能要求极高
  • 国内项目(文档多)
  • 已有项目使用(升级到 2.x)

最佳实践

// 1. 使用注解控制序列化
public class User {
    @JsonProperty("user_name")
    private String userName;
    
    @JsonIgnore
    private String password;
    
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date birthday;
}

// 2. 全局配置
ObjectMapper mapper = new ObjectMapper();
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

// 3. 异常处理
try {
    User user = mapper.readValue(json, User.class);
} catch (JsonProcessingException e) {
    // 处理解析异常
}

总结

对于新项目,推荐使用 Jackson:功能强大、安全可靠、Spring Boot 默认集成。如果是简单场景,Gson 也是不错的选择。Fastjson 2.x 已经修复了安全问题,性能优秀,但生态影响力已不如前。

📚 相关文章