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

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

JSON 工具 2026-05-29 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 万条数据的序列化/反序列化测试:

操作GsonJacksonFastjson
序列化450ms280ms220ms
反序列化520ms310ms260ms
内存占用中低低

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

功能对比

功能GsonJacksonFastjson
注解支持✅✅✅
自定义序列化✅✅✅
流式 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 已经修复了安全问题,性能优秀,但生态影响力已不如前。

📚 相关文章