jackson 驼峰注解_Jackson的使用和常用注解

本文详细介绍了Jackson库中常用的注解,包括@JacksonCore、@JacksonDatabind、@JacksonAnnotations等模块的依赖,以及如何进行属性包含、反序列化和序列化的细节操作。例如,@JsonProperty用于属性重命名,@JsonInclude控制null或empty的处理,@JsonFormat帮助日期格式转换,@JsonUnwrapped实现对象扁平化,@JsonView定义视图,@JsonDeserialize定制反序列化行为,@JsonRootName指定JSON根节点等,这些注解极大地丰富了JSON数据的序列化和反序列化方式。
摘要由CSDN通过智能技术生成

Jackson的依赖

com.fasterxml.jackson.core

jackson-core

版本号

com.fasterxml.jackson.core

jackson-databind

版本号

com.fasterxml.jackson.core

jackson-annotations

版本号

com.fasterxml.jackson.dataformat

jackson-dataformat-xml

版本号

Jackson常用注解

1、属性包含

1)@JsonProperty:此注解作用于属性上,作用是把该属性的名称序列化成另一个自己想要的名称

对属性名进行重命名,支持驼峰和下划线

2)@JsonInclude(JsonInclude.Include.NON_EMPTY)

假设数据库查出来为null,那么data就是null,执行sql是没问题的,success返回true。

由于类上面定义了@JsonInclude(JsonInclude.Include.NON_EMPTY),所以data为null是不会在序列化结果中显示的。

前端获取的返回结果:{“success”:true},后面的js代码直接拿data报错,因为data根本不存在。

@JsonInclude(JsonInclude.Include.NON_NULL)

数据库是没查到数据,但是data这个属性还是要返回的,

因为这是前端js获取数据的唯一字段,可以在没数据的情况下返回一个空的data(数组长度为零,但不为null)。

JsonInclude.Include.NON_EMPTY:属性为空或者null都不参与序列化。

JsonInclude.Include.NON_NULL:属性为null不参与序列化。

3)@JsonAutoDetect:定义默认的字段包含规则

4)@JsonIgnore注解用于属性或者方法上,用来完全忽略被注释的字段和方法对应的属性,即便这个还有其它注解,

一般标记在属性或者方法上,返回的json数据不包含被该注解引用的属性或者方法

5)@JsonIgnoreProperties可以帮我们忽略类中不存在的字段

例如:@JsonIgnoreProperties(ignoreUnknown = true)

还可以指定忽略类中多个字段在类被转成json的格式忽略掉

6)@JsonIgnoreType:修饰类,忽略指定的类型的字段

2、反序列化和序列化的细节

1)@JsonFormat可以帮助我们完成格式转换

例如:

@JsonFormat(timezone=”GTM+8″,pattern=”yyyy-MM-dd HH:mm:ss”)

private Date createDate;

2)@JsonUnwrapped:指定某个字段(类型是POJO)序列化成扁平化,而不是嵌套对象,在反序列化时再包装成对象

如:@JsonUnwrapped(prefix = “pre_”, suffix = “_suf”)

3)@JsonView:可以定义视图

3、字段文档,元数据

1)@JsonPropertyDescription:2.3支持,给字段配置人类阅读的解释

4、反序列化细节

1)@JsonDeserialize

2)@JsonAlias

3)@JacksonInject:指示某个字段的值是注入的,而不是从JSON中取出的

4)@JsonAnySetter:修饰一个2个参数的方法,任何JSON中有,而对象中没有的字段都会以(key,value)的形式传给这个方法

5)@JsonCreator:上篇文章自定义构造方法介绍过了

6)@JsonSetter:是@JsonProperty的替代注解

7)@JsonEnumDefaultValue:反序列化时,如果遇到未定义的枚举值时,赋值为默认枚举

5、序列化细节

1)@JsonSerialize

2)@JsonAnyGetter:修饰一个方法,返回Map,这个方法的返回值会被序列化成(key,value)形式

3)@JsonGetter:@JsonPropert的替代注解

4)@JsonPropertyOrder:注定序列化的顺序

5)@JsonRawValue:被修饰的字段“准确”的显示出来,没有转义或装饰,双引号都不加

6)@JsonValue:指定序列化输出的值

7)@JsonRootName:使用这个指定的值作为JSON的根,前提是SerializationFeature.WRAP_ROOT_VALUE已经打开了

@JsonManagedReference, @JsonBackReference

@JsonIdentityInfo

@JsonFilter 该注解可以在序列化时指定一个过滤器

@JsonAppend

@JsonNaming

@JsonPOJOBuilder

@JsonTypeId

@JsonProperty 这个注解提供了序列化和反序列化过程中该java属性所对应的名称

@JsonAlias 这个注解只只在反序列化时起作用,指定该java属性可以接受的更多名称

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值