jackson学习之一:基本信息
欢迎访问我的GitHub
https://github.com/zq2599/blog_demos
内容:所有原创文章分类汇总及配套源码,涉及Java、Docker、Kubernetes、DevOPS等;
系列文章汇总
- jackson学习之一:基本信息
- jackson学习之二:jackson-core
- jackson学习之三:常用API操作
- jackson学习之四:WRAP_ROOT_VALUE(root对象)
- jackson学习之五:JsonInclude注解
- jackson学习之六:常用类注解
- jackson学习之七:常用Field注解
- jackson学习之八:常用方法注解
- jackson学习之九:springboot整合(配置文件)
- jackson学习之十(终篇):springboot整合(配置类)
关于jackson
本文是《jackson学习》系列的第一篇,先来一起了解jackson:
- jackson的github地址:https://github.com/FasterXML/jackson
- 按照官网所述,jackson是java技术栈内最好的JSON解析工具(best JSON parser for Java);
- 除了JSON解析,jackson还是个数据处理工具集:基于流的解析库和生成库、数据绑定、数据格式化模块(Avro、XML、Protobuf、YAML等);
版本信息
- jackson共有1.x和2.x两个版本系列,其中1.x已废弃不再有版本发布,2.x是活跃版本;
- 1.x和2.x不兼容,如果您的代码已经使用了1.x,现在想改用2.x,您就必须修改使用jackson的那部分代码;
- 虽然不兼容,但是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.);
- 2.x系列版本中,有的版本已关闭(除非bug或者安全问题才会发布新的小版本),有的版本还处于活跃状态,如下图,您可以在这个地址获取最新情况:https://github.com/FasterXML/jackson/wiki/Jackson-Releases
三个核心模块
jackson有三个核心模块,如下,括号内是maven的artifactId:
- Streaming(jackson-core):低阶API库,提供流式解析工具JsonParser,流式生成工具JsonGenerator;
- Annotations(jackson-annotations):jackson注解;
- Databind (jackson-databind):基于java对象的序列化、反序列化能力,需要前面两个模块的支持才能实现;
低阶API库的作用
- 当我们用jackson做JSON操作时,常用的是Databind模块的ObjectMapper类,对处于核心位置的jackson-core反倒是很少直接用到,那么该模块有什么作用呢?
- 如下图,BeanSerializer是jackson-databind的功能类,其serialize方法负责将java对象转为JSON,方法中的处理逻辑就是调用JsonGenerator的API,而JsonGenerator就是jackson-core中负责序列化的主要功能类:
3. 可见Databind模块的ObjectMapper类提供给我们的API,其底层操作是基于jackson-core实现的;
至此,我们对jackson已有了基本了解,接下来的文章会开始一系列的实战,通过实战来掌握和理解这套优秀的工具;
你不孤单,欣宸原创一路相伴
欢迎关注公众号:程序员欣宸
微信搜索「程序员欣宸」,我是欣宸,期待与您一同畅游Java世界...
https://github.com/zq2599/blog_demos
jackson学习之一:基本信息的更多相关文章
- jackson学习之二:jackson-core
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- jackson学习之三:常用API操作
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- jackson学习之四:WRAP_ROOT_VALUE(root对象)
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- jackson学习之五:JsonInclude注解
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- jackson学习之七:常用Field注解
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- jackson学习之八:常用方法注解
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- jackson学习之九:springboot整合(配置文件)
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 系列文章汇总 jackson学习之一:基本信息 jac ...
- jackson学习之十(终篇):springboot整合(配置类)
欢迎访问我的GitHub https://github.com/zq2599/blog_demos 内容:所有原创文章分类汇总及配套源码,涉及Java.Docker.Kubernetes.DevOPS ...
- jackson学习----解析豆瓣的图书信息
异常一. org.codehaus.jackson.map.JsonMappingException: No suitable constructor found for type [simple ...
随机推荐
- 出现VMware Workstation 无法连接到虚拟机。请确保您有权运行该程序、访问该程序使用的所有目录以及访问所有临时文件目录。 未能将管道连接到虚拟机: 所有的管道范例都在使用中。
今天在学习Linux 的时候 启动VM时出现了这个问题, 搞了很久终于弄好了, 就写篇博客来记录一下,帮助一下大家,如果对大家有帮助,还请大哥大姐点个关注,你的支持就是我坚持下去的动力 ! VMwar ...
- python脚本乱码的解决方法
使用python2 在windows cmd 执行python脚本发生乱码的解决方法 可以先把中文解码为unicode,然后再转化为gbk显示正常,需要在代码打印中文处添加 print(':这是一段中 ...
- Python:值得学习的二十个技巧
本文为大家介绍20个值得记住的 Python 技巧,可以提升您编程技巧, 并为您节省大量时间. 在平常编程过程中,以下技巧大多非常有用. 1 字符串反转 使用切片反转字符串. str1="q ...
- C# Wpf 文件保存对话框
C# Wpf库中无文件保存对话框,需引用winform,引用winform后多处提示引用不明确,将winform引用改别名. // 引用winform,改别名 using Forms = System ...
- 读取xlsx文件的内容输入到xls文件中
package com.cn.peitest.excel; import java.io.File; import java.io.FileInputStream; import java.io.Fi ...
- springboot项目中使用jsp
在pom文件中 1.方法一 <!-- 引入tomcate内嵌的jsp解析包--> <dependency> <groupId>org.apache.tomcat.e ...
- java集合大总结
Java集合大总结 java集合框架简图(API关系图): 虚线框表示接口,实线框表示类. 特点和使用总结: Collection: 单列单值. List: 有序(查询顺序和插入顺序一致),有下标(索 ...
- matplotlib中subplots的用法
1.matplotlib中如果只画一张图的话,可以直接用pyplot,一般的做法是: import matplotlib.pyplot as plt plt.figure(figsize=(20,8) ...
- java final思考
final关键之主要用在三个方向: 数据 对于基本类型,final使数据恒定不变:而对于对象引用,final使引用恒定不变即无法再重新new另一个对象给他: 空白final JAVA允许定义一个空白f ...
- OpenSUSE 使用基础
OpenSUSE OpenSUSE 是一个基于 RPM 的发行版,这和 RHEL/CentOS 一致. 但是它的官方包管理器是专有的 zypper,挺好用的,软件也很新. 本文以 OpenSUSE L ...