NIUCLOUD是一款SaaS管理后台框架多应用插件+云编译。上千名开发者、服务商正在积极拥抱开发者生态。欢迎开发者们免费入驻。一起助力发展! 广告
Jackson 是 Java 生态里使用最广泛的 JSON 处理库之一,它通过一组“模块式”的依赖(Maven/Gradle)来提供不同层次的能力。下面先给出一个“一句话”总结,再用表格把常用依赖及其核心功能列出来,方便你按需选型。 一句话总结 Jackson 让你把 Java 对象 ⇄ JSON(以及 XML、YAML、CSV 等)的序列化/反序列化工作,变成“加注解、调一行代码”就能完成的事,同时支持流式高性能读写、动态树模型、数据格式扩展与第三方类型集成。 常用依赖与功能速查表 | 依赖坐标(Maven) | 主要能力 | 典型使用场景 | 备注/额外特性 | |---|---|---|---| | `jackson-core` | 底层流式 API(JsonParser / JsonGenerator) | 超高性能读写 JSON,无需绑定对象 | 整个 Jackson 的基石,任何其它模块都间接依赖它 | | `jackson-annotations` | 提供注解(`@JsonProperty`、`@JsonFormat`…) | 定义序列化规则、字段别名、日期格式等 | 只放注解,无实现,体积最小 | | `jackson-databind` | 对象映射(`ObjectMapper`) | Java Bean ⇄ JSON 的最常用入口 | 依赖上面两项;支持泛型、集合、嵌套对象 | | `jackson-datatype-jdk8` | 支持 JDK8+ 新类型 | `Optional`、`LocalDateTime` 等直接参与序列化 | 与 `databind` 搭配,零配置识别新类型 | | `jackson-datatype-jsr310` | JSR310 时间类型扩展 | `LocalDate`、`Instant`、`ZonedDateTime`… | 避免默认把时间当时间戳或数组输出 | | `jackson-module-kotlin` | Kotlin 类/数据类支持 | 解决 Kotlin 默认参数、空安全、构造函数语义 | 需要与 `databind` 一起用 | | `jackson-dataformat-xml` | XML 支持 | 同一套 API 也能读/写 XML | 基于 Woodstox,支持注解混用 | | `jackson-dataformat-yaml` | YAML 支持 | 配置文件、Spring Boot 常见 | 底层用 SnakeYAML | | `jackson-dataformat-csv` | CSV 支持 | 批量导入导出、报表 | 支持 schema 推断、列顺序控制 | | `jackson-dataformat-properties` | Java Properties ⇄ JSON 树 | 读取 `.properties` 并转成 JsonNode 操作 | 多环境配置合并时很有用 | | `jackson-module-parameter-names` | 利用 `-parameters` 编译参数名 | 无默认构造函数也能反序列化 | 与 Java 8+ 编译器开关配合使用 | | `jackson-module-afterburner` | 字节码加速 | 提升序列化吞吐量约 10-30 % | 通过生成字节码减少反射,仍在维护 | | `jackson-module-blackbird` | Java 11+ 的 Lambda 元数据加速 | Afterburner 的继任版,性能更好 | 需要 JDK 11+,反射更少 | | `jackson-datatype-guava` | Guava 集合/可选类型 | `ImmutableList`、`Multimap`、`Optional` | 与 Guava 深度集成 | | `jackson-datatype-hibernate` | Hibernate 持久化集合/代理 | 解决懒加载、循环引用问题 | 常用于 Spring Boot + JPA 项目 | 使用建议 1. 最小可用组合:只要读写 JSON Bean,引 `jackson-databind` 即可(它会自动拉 `core` + `annotations`)。 2. 时间类型:JDK8 以后务必加 `jackson-datatype-jsr310`,否则 `LocalDateTime` 会被当成数组 `[2026,1,20,…]` 输出。 3. Kotlin 项目:直接 `jackson-module-kotlin`,否则数据类字段可能识别不到。 4. 性能极致:再加 `blackbird`(或 `afterburner`)并开启 `AfterburnerModule`,CPU 敏感场景可再提 10-30 %。 5. 多格式需求:同一套 POJO,换 `ObjectMapper` 注册 `XmlMapper`、`YAMLFactory` 即可,业务代码几乎不改。 这样,你就可以根据项目需要“按需点菜”,避免一次性全部引入造成包体积膨胀。