写点什么

jackson 学习之一:基本信息

作者:程序员欣宸
  • 2022 年 4 月 06 日
  • 本文字数:992 字

    阅读完需:约 3 分钟

jackson学习之一:基本信息

欢迎访问我的 GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

关于 jackson

  • 本文是《jackson 学习》系列的第一篇,先来一起了解 jackson:

  1. jackson 的 github 地址:https://github.com/FasterXML/jackson

  2. 按照官网所述,jackson 是 java 技术栈内最好的 JSON 解析工具(best JSON parser for Java);

  3. 除了 JSON 解析,jackson 还是个数据处理工具集:基于流的解析库和生成库、数据绑定、数据格式化模块(Avro、XML、Protobuf、YAML 等);

版本信息

  1. jackson 共有 1.x 和 2.x 两个版本系列,其中 1.x 已废弃不再有版本发布,2.x 是活跃版本;

  2. 1.x 和 2.x 不兼容,如果您的代码已经使用了 1.x,现在想改用 2.x,您就必须修改使用 jackson 的那部分代码;

  3. 虽然不兼容,但是 1.x 和 2.x 不冲突,您的项目可以在 pom.xml 中同时依赖这两个版本,假设您原有三处代码调用了 1.x 的 API,现在可以把一处改成 2.x 的,另外两处维持不变,这个特性适合将项目逐步从 1.x 升级到 2.x(This is by design and was chosen as the strategy to allow smoother migration from 1.x to 2.x.);

  4. 2.x 系列版本中,有的版本已关闭(除非 bug 或者安全问题才会发布新的小版本),有的版本还处于活跃状态,如下图,您可以在这个地址获取最新情况:https://github.com/FasterXML/jackson/wiki/Jackson-Releases

三个核心模块

  • jackson 有三个核心模块,如下,括号内是 maven 的 artifactId:

  1. Streaming(jackson-core):低阶 API 库,提供流式解析工具 JsonParser,流式生成工具 JsonGenerator;

  2. Annotations(jackson-annotations):jackson 注解;

  3. Databind (jackson-databind):基于 java 对象的序列化、反序列化能力,需要前面两个模块的支持才能实现;

低阶 API 库的作用

  1. 当我们用 jackson 做 JSON 操作时,常用的是 Databind 模块的 ObjectMapper 类,对处于核心位置的 jackson-core 反倒是很少直接用到,那么该模块有什么作用呢?

  2. 如下图,BeanSerializer 是 jackson-databind 的功能类,其 serialize 方法负责将 java 对象转为 JSON,方法中的处理逻辑就是调用 JsonGenerator 的 API,而 JsonGenerator 就是 jackson-core 中负责序列化的主要功能类:

  3. 可见 Databind 模块的 ObjectMapper 类提供给我们的 API,其底层操作是基于 jackson-core 实现的;


  • 至此,我们对 jackson 已有了基本了解,接下来的文章会开始一系列的实战,通过实战来掌握和理解这套优秀的工具;

欢迎关注 InfoQ:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...

发布于: 刚刚阅读数: 2
用户头像

搜索"程序员欣宸",一起畅游Java宇宙 2018.04.19 加入

前腾讯、前阿里员工,从事Java后台工作,对Docker和Kubernetes充满热爱,所有文章均为作者原创,个人Github:https://github.com/zq2599/blog_demos

评论

发布
暂无评论
jackson学习之一:基本信息_四月月更_程序员欣宸_InfoQ写作平台