我对的json序列化有问题ZonedDateTime。当转换为json时,它将产生一个巨大的对象,我不希望每次都传输所有这些数据。因此,我尝试将其格式化为ISO,但无法正常工作。我该如何格式化?
ZonedDateTime
这是我的实体类:
@MappedSuperclass public abstract class AuditBase { @Id @GeneratedValue private Long id; @CreatedDate private ZonedDateTime createdDate; @LastModifiedDate private ZonedDateTime lastModifiedDate; @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) public ZonedDateTime getLastModifiedDate() { return lastModifiedDate; } public void setLastModifiedDate(ZonedDateTime lastModifiedDate) { this.lastModifiedDate = lastModifiedDate; } @DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME) public ZonedDateTime getCreatedDate() { return createdDate; } public void setCreatedDate(ZonedDateTime createdDate) { this.createdDate = createdDate; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } @PrePersist public void prePersist() { this.createdDate = ZonedDateTime.now(); this.lastModifiedDate = ZonedDateTime.now(); } @PreUpdate public void preUpdate() { this.lastModifiedDate = ZonedDateTime.now(); } }
将此依赖项添加到你的pom.xml中
<dependency> <groupId>com.fasterxml.jackson.datatype</groupId> <artifactId>jackson-datatype-jsr310</artifactId> <version>2.6.0</version> </dependency>
这是它的用法:
public static void main(String[] args) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); objectMapper.registerModule(new JavaTimeModule()); System.out.println(objectMapper.writeValueAsString(new Entity())); } static class Entity { ZonedDateTime time = ZonedDateTime.now(); @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ") public ZonedDateTime getTime() { return time; } }
输出为:
{"time":"2015-07-25T23:09:01.795+0700"}
注意:如果你的Jackson版本是2.4.x,请使用
objectMapper.registerModule(new JSR310Module());