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

2026-08-30 19:25:02 装备掉落 3449

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 已经修复了安全问题,性能优秀,但生态影响力已不如前。

虚拟现实工程师:报考步骤是?适合哪些人员?就业方向在哪?
悦动这款车的安全配置究竟怎么样