jackson序列化

66 阅读1分钟

jackson 序列化问题

jackson序列化对象时,需要对象拥有空构造方法,否则无法序列化,同时jackson序列化化时,是将getXX()方法的XX进行序列化和反序列,如果有方法是getXX(),但是没有对应的字段属性或者对应的set方法,请添加如下注解,对列表里的属性在序列化和反序列时忽略

 代码解读
复制代码
@JsonIgnoreProperties(value = {"serviceKey", "serviceNodeKey", "serviceAddress"})
public class test{
//...
}

序列化LocalDateTime不支持

如果需要jackson支持序列化LocalDateTime,则需要引入如下依赖,并将time的模块支持注册到ObjectMapper,但是这样序列化后的时间会出现如[XX,XX,XX]这样的格式,这时我们需要在对应的字段上加上如下注解

 代码解读
复制代码
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")//指定序列化格式,和时区

依赖

1.  <dependency>
1.  <groupId>com.fasterxml.jackson.datatype</groupId>
1.  <artifactId>jackson-datatype-jsr310</artifactId>
1.  <version>2.13.0</version> <!-- 版本保持一致 -->
1.  </dependency>

配置更改

/**
 * 定义jackson对象
 */
private static final ObjectMapper MAPPER = new ObjectMapper();

static {
    // 添加对time模块的全部支持==>LocalDateTime
    MAPPER.registerModule(new JavaTimeModule());
}

序列化支持首字母大写

通过@JsonAutoDetect注解添加字段可见范围和get以及set可见范围实现

@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY, getterVisibility = JsonAutoDetect.Visibility.NONE)