专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

Jackson的使用和常用注解

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工具类:https://my.oschina.net/lion1220/blog/3151031

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属性可以接受的更多名称

文章永久链接:https://tech.souyunku.com/24957

未经允许不得转载:搜云库技术团队 » Jackson的使用和常用注解

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们