Jackson---随笔

最近在详细、深入的学习java的周边辅助框架,并且写下随笔,方便以后查看;并且记录下自己的思维历程,欢迎大家的拍砖。

这次主要介绍的Jackson,就是Spring Boot默认的json转换工具。既然是工具,大家掌握一种便可,内部深入的设计思路可不做

深入,但是应用我们一定要掌握。本着这样的思路,我们将从以下几个方面做下介绍。

1、安装

     我们如果要使用Jackson,需要再maven中引入相关的类包。Jackson主要包含了三个类包:

    a、Jackson Core

    b、Jackson Annotations

    c、Jackson Databind

    Jackson不只是json的转换工具,还可以做其他形式的文件做转换及分析。比如:YAML 、 CBOR 等。

2、设计思路

  Jackson工具主要做两件事情:

       序列化:Java Object 转换为 Json  

  反序列化:Json 转换为 Java Object

  序列化,是调用的Java Object 的get方法;反序列化,是首先分析json,然后按照field name 调用对应的set方法。

3、工具

  Jackson 为我们提供了两种工具:

       更上层的工具:ObjectMapper 。 其包含了序列化、反序列化方法 

  底层工具:JsonPaser(反序列化) 、 JsonGenerator (序列化) 。 若是Jackson提供的默认序列化、反序列化工具不足以支持我们的需求,便可以自定义序列化工具。

4、对象

  使用Jackson框架,我们将会遇到三种对象。Json 、 JsonNode 、 Java Object ,三者之间可以相互转化,具体的转换方法不在一一的表述。

5、注解

  主要分为三种:序列化注解、反序列化注解。序列化注解:是Java 对象序列化时用到的;反序列化注解:是Json反序列化到Java对象用到的注解。剩下的一种及时序列化、反序列化均可以使用的。

  序列化、反序列化:

  JsonIgnore : 忽视 指定的属性

  JsonIgnoreProperties : 忽视指定的属性

  JsonIgnoreType : 忽视指定的类型

  JsonAutoDetect :  自动发现非public的属性

  反序列化:

  JsonSetter : 反序列化时,Json中的属性名称

  JsonAnySetter : 应用到Map对象,key做json中的属性,value做属性对应的值

  JsonCreator: 应用在Java 类型为不可变的类,注解应用在构造方法上,并且需要JsonProperty指定json属性名称指定属性名称

  JacksonInject : Java 对象中的属性值需要被注入

  JsonDeserialize : 自定义反序列化实现的工具

  序列化:

  JsonInclude:只是包含指定值的属性

  JsonGetter : 序列化到Json中的属性名称

  JsonAnyGetter : 应用在Map对象上,Map中的Key映射到Json中的属性,Value做Json中的值

  JsonPropertyOrder:属性字段的顺序

  JsonRawValue: 映射到json中为原值

  JsonValue: 简单的序列化方法

  JsonSerialize:序列化方法

原文地址:https://www.cnblogs.com/sunxianbiao/p/12728703.html