当前位置: 首页 > 面试题库 >

Spring Data JPA-用于json序列化的ZonedDateTime格式

松铭
2023-03-14
问题内容

我对的json序列化有问题ZonedDateTime。当转换为json时,它将产生一个巨大的对象,我不希望每次都传输所有这些数据。因此,我尝试将其格式化为ISO,但无法正常工作。我该如何格式化?

这是我的实体类:

@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());


 类似资料:
  • 我在json序列化时遇到了问题。当转换到json时,它会产生一个巨大的对象,我不希望所有的数据每次都被传输。所以我试着把它格式化为ISO,但它不起作用。我怎样才能使它格式化? 下面是我的实体类:

  • ObjectMapper不会将对象格式化为自定义对象。 波乔不在我的控制之下,所以我不能改变它。我需要序列化WS的POJO对象。POJO有(我不知道为什么,因为它的日期来自数据库)。 我使用的是Spring boot 2.1.8。释放,所以。。。我将其放入我的依赖项中: 我还在应用程序中添加了这个。特性: 在配置文件中,我在配置文件中添加了这个bean,因为尽快配置ObjectMapper以接受更

  • 假设我希望使用以下类从外部JSON负载进行反序列化: null 编辑:我使用的是Spring Boot V2.1.1。

  • null Spring Boot 1.3.1 Jackson 2.6.4(包含JSR310模块) 这需要自定义反序列化类吗?

  • 我正在尝试将存储为UTC的日期时间转换为给定时区的日期时间。据我所知,ZonedDateTime是正确的(“美国/芝加哥”比UTC晚5小时),但DateTimeForware在格式化日期时间时没有考虑偏移量。 我的挂钟时间:12:03 pm 输出: 我期望的格式化时间为:2019年8月29日下午12:03

  • 问题内容: 我想对自己的自定义类进行JSON序列化。我正在使用Objective-C / iOS5。我想要执行以下操作: 看来NSJSONSerialization(和其他几个库)要求’person’类基于NSDictionary等。我想要一些可以序列化我想要定义的自定义对象的对象(在合理范围内)。 假设Person.h看起来像这样: 我希望为实例生成的JSON与以下内容相似: 我的应用程序使用A