Jackson
Jackson库是JSON Java库,用于在Java程序中解析JSON数据。
Jackson源码目前托管于GitHub,地址:https://github.com/FasterXML/
一、Jackson 1.9.x版库说明
Jackson 1.9.10版的库有多种选择:
1. 单个库下载:提供了core-asl、mapper-asl、core-lpgl、mapper-lgpl、jax-rs、jax-xc、mrbean、smile等JAR包下载。
2. Jackson ALL库:包含了上面所有的JAR包,打包成了单个JAR文件。
下载:http://jackson.codehaus.org/1.9.10/jackson-all-1.9.10.jar
3. Jackson Mini库:包含了jackson-core库,排除了注释库、许可证文件、用于使用受限的环境,比如移动设备,JAR包的尺寸显著减少。
下载:http://jackson.codehaus.org/1.9.10/jackson-mini-1.9.10.jar
4. Smile Tool工具:一个命令行工具,用于在Smile格式和JSON格式之间相互转换。
下载:http://jackson.codehaus.org/1.9.10/smile-tool-1.9.10.jar
注:Smile是二进制的JSON数据格式,等同于标准的JSON数据格式。Smile格式于2010年发布,于2010年9月Jackson 1.6版开始支持。
支持Smile格式的框架:
(1) Jackson JSON Processor:完全支持Smile格式,包括流式访问,数据绑定和树模型。
(2) libsmile:一个C语言库,支持读写Smile数据。
(3) Elastic Search:支持把Smile格式作为输入/输出的源。
(4) Protostuff:此项目支持Smile格式作为底层数据格式,也用于RPC的格式之一。
二、Jackson 2.x版库说明
Jackson 2.x版提供了三个JAR包供下载:
1. Core库:streaming parser/generator,即流式的解析器和生成器。核心包(必须),提供基于“流模式”解析的API。
2. Annotations库:databinding annotations,即带注释的数据绑定包。注解包(可选),提供注解功能。
3. Databind库:ObjectMapper, Json Tree Model,即对象映射器,JSON树模型。数据绑定包(可选),提供基于“对象绑定”和“树模型”相关API。
下载:
http://repo1.maven.org/maven2/com/fasterxml/jackson/core/
- Jackson的优势
相对于java json解析的其他库,诸如json-lib、gson包,Jackson具有以下优点:
- 功能全面,提供多种模式的json解析方式,“对象绑定”使用方便,利用注解包能为我们开发提供很多便利。
- 性能较高,“流模式”的解析效率超过绝大多数类似的json包。
- 重要API
- 核心包:JsonPaser(json流读取),JsonGenerator(json流输出)。
- 数据绑定包:ObjectMapper(构建树模式和对象绑定模式),JsonNode(树节点)。
jackson在实际应用中给我们提供了一系列注解,提高了开发的灵活性,下面介绍一下最常用的一些注解
- @JsonIgnoreProperties
此注解是类注解,作用是json序列化时将java bean中的一些属性忽略掉,序列化和反序列化都受影响。
- @JsonIgnore
此注解用于属性或者方法上(最好是属性上),作用和上面的@JsonIgnoreProperties一样。
- @JsonFormat
此注解用于属性或者方法上(最好是属性上),可以方便的把Date类型直接转化为我们想要的模式,比如@JsonFormat(pattern = "yyyy-MM-dd HH-mm-ss")
- @JsonSerialize
此注解用于属性或者getter方法上,用于在序列化时嵌入我们自定义的代码,比如序列化一个double时在其后面限制两位小数点。
- @JsonDeserialize
此注解用于属性或者setter方法上,用于在反序列化时可以嵌入我们自定义的代码,类似于上面的@JsonSerialize