Jackson 使用教程,Springboot 集成

解析json 数据,处理封装和返回,国内很多开发者喜欢用fastjson,其实这都无所谓,但 Springboot 提供对Jackson的自动配置spring-boot-starter-json,它才是Springboot支持的默认json lib。所以,如果是简单的Springboot项目,推荐用Jackson

简单的数据转换,这篇博客总结的很全Jackson使用详解。这里主要想分享几个不常见、但作用很强大的注解。用得恰当,能解决一些特殊需求。

使用依赖前面提过,Springboot做了自动配置,依赖如下就行。

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-json</artifactId>
        </dependency>

1、@JsonIgnore

这个注解用在对象属性上,将对象转成json时,该属性会被忽略,也就是说不会被转到json字符串中。这个注解还可以用到对象属性,这样整个对象会被忽略。

    @JsonIgnore
    private Date createTime;
    
    @JsonIgnore
    BizXxxDTO xxxDTO;

2、@JsonProperty

对属性重命名,对象序列化和反序列化常被用到。

序列化和反序列化分两种,最初序列化是指将Java对象转成byte[]数组,这样这个就能将对象传递和保存。

将对象输出到文件中,差不多如下形式。

[48, 57, 0, 5, 72, 101, 108, 108, 111, 115, 114, 0, 16, 106, 97, 118, 97, 46, 108, 97, 110, 103, 46, 68, 111, 117, 98, 108, 101, -128, -77, -62, 74, 41, 0, 1, 68, 0, 5, 118, 97, 108, 117, 101, 120, 114, 0, 16, 106, 97, 118, 97, 46, 108, 97, 110, 103, 46, 78, 117, 109, 98, 101, 114, -122, -84, -107, 29, 11, -108, -32, -117, 2, 0, 0, 120, 112, 64, 94, -35, 47, 26, -97, -66, 119]

反序列化就是将如上数据,转成对象。

但这都是最初的定义,属于 JDK 的方法。但byte[]数组有很多缺陷,现在常说序列化指对象和json字符串之间的转化。将对象转成json字符串是序列化,反之是反序列化。

再来看这个注解,前面提了,它的作用是对属性重命名。

    @JsonProperty(value = "qR_Code")
    private String qRCode;

用上它,这个对象序列化时,json字符串中这个属性的key不是qrCode,而是qr_code。这个功能在联合第三方平台开发时挺有用。

反之也是一样,反序列化时,用上这个注解,去接收json字符串中奇奇怪怪的key

3、@JsonFormat

常用在属性,方法函数也能使用,对象和json转换,保证日期时间格式。

@JsonFormat(timezone="GTM+8",pattern="yyyy-MM-dd HH:mm:ss")
private Date createDate;

@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    public Date getCreateTimeString() {
        return this.getCreateTime();
    }

本文由老郭种树原创,转载请注明:https://guozh.net/jackson-springboot/

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注